/** * bcat BG Switcher - unobtrusive background image switcher * @version 2.1.1 * @jQuery version 1.2+ * @author Yuriy Davats http://www.bcat.eu * @copyright Yuriy Davats * @modified by Frank Lamozik (LDSign) */ !function(e,t,n,r){function a(e,t){this._defaults=o,this._name=i,this.init(e,t)}var i="bcatBGSwitcher",o={urls:[],startIndex:0,autoplay:!0,timeout:12e3,alt:"Picture",speed:1e3,links:!1,prevnext:!1,fadeFirst:!0,preserveState:!1,cookie:"bcatBGSwitcher",onFirstImageLoad:function(){},onInitComplete:function(){},onGenerateEachLink:function(){},onGenerateEachImage:function(e){return e},overrideChangeElement:null};a.prototype={init:function(t,n){var a={};n.preserveState&&e.cookie==r&&(console.log("Preserve state option requires cookie plugin (https://github.com/carhartl/jquery-cookie)"),n.preserveState=!1),n.preserveState&&e.cookie(n.cookie)!=r&&(n.startIndex=e.cookie(n.cookie)),a.currentIndex=n.startIndex,a.currentImage=this.preloadImage(t,n,a.currentIndex);var i=this,o=this.getDomElement(a.currentImage);a.currentImage.img.load(function(){if(o.appendTo(t),n.fadeFirst?o.fadeIn(n.speed):o.show(),a.currentIndex++,n.onFirstImageLoad.call(this),n.urls[a.currentIndex]){if(n.links||n.prevnext){var r=e("
").attr({id:t.id+"-loader",style:"display: none;"});r.appendTo(t)}n.links&&i.generateLinks(t,n,a),n.prevnext&&i.generatePrevNext(t,n,a),n.autoplay&&i.runSlideShow(t,n,a)}n.onInitComplete.call(t,n,a)})},runSlideShow:function(e,t,n){var r=this;n.intervalId=setInterval(function(){r.updateImage(e,t,n)},t.timeout)},updateImage:function(t,n,r){n.urls[r.currentIndex]||(r.currentIndex=0);var a=e("#"+t.id+r.currentIndex);if(a.length){var i=this.getDomElement(r.currentImage);this.changeElement(n,i,a)}else a=this.preloadImage(t,n,r.currentIndex),this.swapPreloadedImages(r.currentImage,a,t,n);n.links&&this.setActiveLink(t,n,r),n.preserveState&&e.cookie(n.cookie,r.currentIndex),r.currentImage=a,r.currentIndex++},preloadImage:function(t,n,r,a){a||(a="display: none;");var i=n.urls[r],o=n.alt,l="";if("object"==typeof i){var s=!0;i.alt&&(o=i.alt),i.src?i=i.src:(console.log("Please provide an src property for every object in urls array."),s=!1)}var d=e("");return d.attr({id:t.id+r,src:i,alt:o,style:a}),s&&(l=this.processCustomHTML(t,n,r,d)),{img:d,html:l}},swapPreloadedImages:function(t,n,r,a,i){var o=this.getDomElement(t),l=this.getDomElement(n),s=this;i&&e(r).addClass("loading"),n.img.load(function(){i&&e(r).removeClass("loading"),l.appendTo(r),s.changeElement(a,o,l)})},generateLinks:function(t,n,r){r.linkParent=e("
"),r.linkParent.attr({id:t.id+"-navigation",style:"display: none;"});var a=this;e.each(n.urls,function(i,o){var l=e(""),s="";i===n.startIndex&&(s="active"),l.attr({id:t.id+"-link"+i,href:"#","class":s}),l.click(function(e){e.preventDefault(),a.switchImageTo(t,n,r,i)}),n.onGenerateEachLink.call(r,l,i,o),r.linkParent.append(l)}),r.linkParent.appendTo(t),r.linkParent.fadeIn(n.speed)},generatePrevNext:function(t,n,r){r.prevnextParent=e("
"),r.prevnextParent.attr({id:t.id+"-prevnext-wrapper",style:"display: none;"});var a=this,i=e("");i.attr({id:t.id+"-previous-link",href:"#","class":t.id+"-prevnext-link"}),i.click(function(e){e.preventDefault();var i=r.currentIndex-2;n.urls[i]||(i=n.urls.length-1),a.switchImageTo(t,n,r,i)}),r.prevnextParent.append(i);var o=e("");o.attr({id:t.id+"-next-link",href:"#","class":t.id+"-prevnext-link"}),o.click(function(e){e.preventDefault();var i=r.currentIndex;n.urls[i]||(i=0),a.switchImageTo(t,n,r,i)}),r.prevnextParent.append(o),r.prevnextParent.appendTo(t),r.prevnextParent.fadeIn(n.speed)},switchImageTo:function(t,n,r,a){if(!n.urls[a])return void console.log("can not switch to a non-existent element");var i=e("#"+t.id+a),o=this.getDomElement(r.currentImage);if(i.attr("id")!==o.attr("id")){r.currentIndex=a,n.autoplay&&clearInterval(r.intervalId),i.length?this.changeElement(n,o,i):(i=this.preloadImage(t,n,r.currentIndex),this.swapPreloadedImages(r.currentImage,i,t,n,!0)),n.links&&this.setActiveLink(t,n,r),r.currentImage=i,r.currentIndex++;var l=this;n.autoplay&&(r.intervalId=setInterval(function(){l.updateImage(t,n,r)},n.timeout))}},setActiveLink:function(e,t,n){n.linkParent.length&&(n.linkParent.find("a").removeClass("active"),n.linkParent.find("a#"+e.id+"-link"+n.currentIndex).addClass("active"))},processCustomHTML:function(t,n,r,a){var i=e("
"),o=n.urls[r];return i.attr("id",a.attr("id")),a.attr("id",t.id+"-image-"+r),i.attr("style",a.attr("style")),a.removeAttr("style"),i.addClass(t.id+"-html"),i.append(a),i=n.onGenerateEachImage.call(this,i,o)},changeElement:function(e,t,n){return null===e.overrideChangeElement?(t.fadeOut(e.speed),void n.fadeIn(e.speed)):void e.overrideChangeElement(e,t,n)},getDomElement:function(e){if(e instanceof jQuery)return e;var t=e.html.length?e.html:e.img;return t}},e.fn[i]=function(t){return this.each(function(){if(!e.data(this,"plugin_"+i)){var n=e.extend({},o,t);e.data(this,"plugin_"+i,new a(this,n))}})}}(jQuery,window,document);