(function(d){d.widget("thomaskahn.smoothDivScroll",{options:{scrollingHotSpotLeft:"div.slide-left",scrollingHotSpotRight:"div.slide-right",scrollableArea:"div.items",scrollWrapper:"div.slider-body",hiddenOnStart:!1,ajaxContentURL:"",countOnlyClass:"",scrollStep:5,scrollInterval:10,mouseDownSpeedBooster:3,autoScroll:"",autoScrollDirection:"endlessloopleft",autoScrollStep:5,autoScrollInterval:5,visibleHotSpots:"",hotSpotsVisibleTime:5,startAtElementId:"",autoMode:!0},_create:function(){var c=this,a=
this.options,b=this.element;b.data("scrollWrapper",b.find(a.scrollWrapper));b.data("scrollingHotSpotRight",b.find(a.scrollingHotSpotRight));b.data("scrollingHotSpotLeft",b.find(a.scrollingHotSpotLeft));b.data("scrollableArea",b.find(a.scrollableArea));b.data("speedBooster",1);b.data("motherElementOffset",b.offset().left);b.data("scrollXPos",0);b.data("hotSpotWidth",b.find(a.scrollingHotSpotLeft).width());b.data("scrollableAreaWidth",0);b.data("startingPosition",0);b.data("rightScrollInterval",null);
b.data("leftScrollInterval",null);b.data("autoScrollInterval",null);b.data("hideHotSpotBackgroundsInterval",null);b.data("previousScrollLeft",0);b.data("pingPongDirection","right");b.data("getNextElementWidth",!0);b.data("swapAt",null);b.data("startAtElementHasNotPassed",!0);b.data("swappedElement",null);b.data("originalElements",b.data("scrollableArea").children(a.countOnlyClass));b.data("visible",!0);b.data("initialAjaxContentLoaded",!1);b.data("enabled",!0);b.data("scrollWrapper").scrollLeft(b.data("startingPosition"));
setTimeout(function(){if(d(a.scrollWrapper+" "+a.scrollableArea).outerWidth()<d(a.scrollWrapper).outerWidth()*1.3)a.autoMode=!1;d(a.scrollWrapper+" "+a.scrollableArea).outerWidth()<d(a.scrollWrapper).outerWidth()+10&&(d(a.scrollingHotSpotLeft).css("display","none"),d(a.scrollingHotSpotRight).css("display","none"))},100);b.data("scrollingHotSpotRight").bind("mousemove",function(c){a.autoMode||(c=c.pageX-(this.offsetLeft+b.data("motherElementOffset")),b.data("scrollXPos",Math.round(c/b.data("hotSpotWidth")*
a.scrollStep)),b.data("scrollXPos")===Infinity&&b.data("scrollXPos",0))});b.data("scrollingHotSpotRight").bind("mouseover",function(){a.autoMode?(a.autoScrollDirection="endlessloopright",b.data("autoScrollInterval")!==null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null)),c.startAutoScroll()):(a.autoScroll==="onstart"&&b.data("autoScrollInterval")!==null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null),c._trigger("autoScrollIntervalStopped")),
b.data("rightScrollInterval",setInterval(function(){b.data("scrollXPos")>0&&b.data("enabled")&&(b.data("scrollWrapper").scrollLeft(b.data("scrollWrapper").scrollLeft()+b.data("scrollXPos")*b.data("speedBooster")),c._showHideHotSpots())},a.scrollInterval)),c._trigger("mouseOverRightHotSpot"))});b.data("scrollingHotSpotRight").bind("mouseout",function(){a.autoMode?b.data("autoScrollInterval")!==null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null),c.stopautoscroll()):
(clearInterval(b.data("rightScrollInterval")),b.data("scrollXPos",0))});b.data("scrollingHotSpotLeft").bind("mousemove",function(c){a.autoMode||(c=b.data("scrollingHotSpotLeft").innerWidth()-(c.pageX-b.data("motherElementOffset")),b.data("scrollXPos",Math.round(c/b.data("hotSpotWidth")*a.scrollStep)),b.data("scrollXPos")===Infinity&&b.data("scrollXPos",0))});b.data("scrollingHotSpotLeft").bind("mouseover",function(){a.autoMode?(a.autoScrollDirection="endlessloopleft",b.data("autoScrollInterval")!==
null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null)),c.startAutoScroll()):(a.autoScroll==="onstart"&&b.data("autoScrollInterval")!==null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null),c._trigger("autoScrollIntervalStopped")),b.data("leftScrollInterval",setInterval(function(){b.data("scrollXPos")>0&&b.data("enabled")&&(b.data("scrollWrapper").scrollLeft(b.data("scrollWrapper").scrollLeft()-b.data("scrollXPos")*b.data("speedBooster")),
c._showHideHotSpots())},a.scrollInterval)),c._trigger("mouseOverLeftHotSpot"))});b.data("scrollingHotSpotLeft").bind("mouseout",function(){a.autoMode?b.data("autoScrollInterval")!==null&&(clearInterval(b.data("autoScrollInterval")),b.data("autoScrollInterval",null),c.stopautoscroll()):(clearInterval(b.data("leftScrollInterval")),b.data("scrollXPos",0))});b.data("scrollingHotSpotRight").bind("mousedown",function(){b.data("speedBooster",a.mouseDownSpeedBooster)});d("body").bind("mouseup",function(){b.data("speedBooster",
1)});b.data("scrollingHotSpotLeft").bind("mousedown",function(){b.data("speedBooster",a.mouseDownSpeedBooster)});d(window).bind("resize",function(){a.hiddenOnStart||c._showHideHotSpots();c._trigger("windowResized")});a.ajaxContentURL.length>0?c.replaceContent(a.ajaxContentURL):c.recalculateScrollableArea();a.hiddenOnStart&&c.hide();a.autoScroll.length>0&&!a.hiddenOnStart&&a.ajaxContentURL.length<=0&&c.startAutoScroll()},showHotSpotBackgrounds:function(c){var a=this.element;c!==void 0?(a.data("scrollingHotSpotLeft").css("opacity",
"0.0"),a.data("scrollingHotSpotRight").css("opacity","0.0"),a.data("scrollingHotSpotLeft").addClass("slide-left-visible"),a.data("scrollingHotSpotRight").addClass("slide-right-visible"),a.data("scrollingHotSpotLeft").fadeTo(c,0.35),a.data("scrollingHotSpotRight").fadeTo(c,0.35)):(a.data("scrollingHotSpotLeft").addClass("slide-left-visible"),a.data("scrollingHotSpotLeft").removeAttr("style"),a.data("scrollingHotSpotRight").addClass("slide-right-visible"),a.data("scrollingHotSpotRight").removeAttr("style"));
this._showHideHotSpots()},hideHotSpotBackgrounds:function(c){var a=this.element;c!==void 0?(a.data("scrollingHotSpotLeft").fadeTo(c,0,function(){a.data("scrollingHotSpotLeft").removeClass("slide-left-visible")}),a.data("scrollingHotSpotRight").fadeTo(c,0,function(){a.data("scrollingHotSpotRight").removeClass("slide-right-visible")})):(a.data("scrollingHotSpotLeft").removeClass("slide-left-visible"),a.data("scrollingHotSpotLeft").removeAttr("style"),a.data("scrollingHotSpotRight").removeClass("slide-right-visible"),
a.data("scrollingHotSpotRight").removeAttr("style"))},_showHideHotSpots:function(){var c=this.element;this.options.autoScroll!=="always"&&(c.data("scrollWrapper").scrollLeft()===0?(this._trigger("scrollLeftLimitReached"),clearInterval(c.data("leftScrollInterval")),c.data("leftScrollInterval",null)):c.data("scrollableAreaWidth")<=c.data("scrollWrapper").innerWidth()+c.data("scrollWrapper").scrollLeft()&&(this._trigger("scrollRightLimitReached"),clearInterval(c.data("rightScrollInterval")),c.data("rightScrollInterval",
null)))},moveToElement:function(c,a){var b=this.element,e=this.options,f=0;switch(c){case "first":b.data("scrollXPos",0);this._trigger("movedToFirstElement");break;case "start":b.data("scrollableArea").children(e.countOnlyClass).each(function(){e.startAtElementId.length>0&&d(this).attr("id")===e.startAtElementId&&b.data("startingPosition",f);f+=d(this).outerWidth(!0)});b.data("scrollXPos",b.data("startingPosition"));this._trigger("movedToStartElement");break;case "last":b.data("scrollXPos",b.data("scrollableAreaWidth"));
this._trigger("movedToLastElement");break;case "number":isNaN(a)||b.data("scrollableArea").children(e.countOnlyClass).each(function(c){c===a-1&&b.data("scrollXPos",f);f+=d(this).outerWidth(!0)}),this._trigger("movedToElementNumber",null,{elementNumber:a})}b.data("scrollWrapper").scrollLeft(b.data("scrollXPos"))},addContent:function(c,a){var b=this,e=this.element;d.get(c,function(c){a==="first"?e.data("scrollableArea").children(":first").before(c):e.data("scrollableArea").children(":last").after(c);
b.recalculateScrollableArea();b._showHideHotSpots()})},replaceContent:function(c){var a=this,b=this.element;b.data("scrollableArea").load(c,function(){a.recalculateScrollableArea();a.moveToElement("first");a._showHideHotSpots();b.data("startingPosition",0)})},recalculateScrollableArea:function(){var c=1,a=!1,b=this.options,e=this.element;e.data("scrollableArea").children(b.countOnlyClass).each(function(){b.startAtElementId.length>0&&d(this).attr("id")===b.startAtElementId&&(e.data("startingPosition",
c),a=!0);c+=d(this).outerWidth(!0)});a||e.data("startAtElementId","");e.data("scrollableAreaWidth",c);e.data("scrollableArea").width(e.data("scrollableAreaWidth"));!e.data("initialAjaxContentLoaded")&&b.autoScroll.length>0&&!b.hiddenOnStart&&b.ajaxContentURL.length>0&&(this.startAutoScroll(),e.data("initialAjaxContentLoaded",!0))},stopautoscroll:function(){var c=this.element;clearInterval(c.data("autoScrollInterval"));c.data("autoScrollInterval",null);this._showHideHotSpots();this._trigger("autoScrollStopped")},
startAutoScroll:function(){var c=this,a=this.element,b=this.options;clearInterval(a.data("autoScrollInterval"));a.data("autoScrollInterval",null);c._trigger("autoScrollStarted");a.data("autoScrollInterval",setInterval(function(){if(!a.data("visible")||a.data("scrollableAreaWidth")<=a.data("scrollWrapper").innerWidth())clearInterval(a.data("autoScrollInterval")),a.data("autoScrollInterval",null);else switch(a.data("previousScrollLeft",a.data("scrollWrapper").scrollLeft()),b.autoScrollDirection){case "right":a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()+
b.autoScrollStep);a.data("previousScrollLeft")===a.data("scrollWrapper").scrollLeft()&&(c._trigger("autoScrollRightLimitReached"),clearInterval(a.data("autoScrollInterval")),a.data("autoScrollInterval",null),c._trigger("autoScrollIntervalStopped"));break;case "left":a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()-b.autoScrollStep);a.data("previousScrollLeft")===a.data("scrollWrapper").scrollLeft()&&(c._trigger("autoScrollLeftLimitReached"),clearInterval(a.data("autoScrollInterval")),
a.data("autoScrollInterval",null),c._trigger("autoScrollIntervalStopped"));break;case "backandforth":a.data("pingPongDirection")==="right"?a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()+b.autoScrollStep):a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()-b.autoScrollStep);a.data("previousScrollLeft")===a.data("scrollWrapper").scrollLeft()&&(a.data("pingPongDirection")==="right"?(a.data("pingPongDirection","left"),c._trigger("autoScrollRightLimitReached")):
(a.data("pingPongDirection","right"),c._trigger("autoScrollLeftLimitReached")));break;case "endlessloopright":a.data("getNextElementWidth")&&(b.startAtElementId.length>0&&a.data("startAtElementHasNotPassed")?(a.data("swapAt",d("#"+b.startAtElementId).outerWidth(!0)),a.data("startAtElementHasNotPassed",!1)):a.data("swapAt",a.data("scrollableArea").children(":first").outerWidth(!0)),a.data("getNextElementWidth",!1));a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()+b.autoScrollStep*
a.data("speedBooster"));a.data("swapAt")<=a.data("scrollWrapper").scrollLeft()&&(a.data("swappedElement",a.data("scrollableArea").children(":first").detach()),a.data("scrollableArea").append(a.data("swappedElement")),a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()-a.data("swappedElement").outerWidth(!0)),a.data("getNextElementWidth",!0));break;case "endlessloopleft":a.data("getNextElementWidth")&&(b.startAtElementId.length>0&&a.data("startAtElementHasNotPassed")?(a.data("swapAt",
d("#"+b.startAtElementId).outerWidth(!0)),a.data("startAtElementHasNotPassed",!1)):a.data("swapAt",a.data("scrollableArea").children(":first").outerWidth(!0)),a.data("getNextElementWidth",!1)),a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()-b.autoScrollStep*a.data("speedBooster")),a.data("scrollWrapper").scrollLeft()===0&&(a.data("swappedElement",a.data("scrollableArea").children(":last").detach()),a.data("scrollableArea").prepend(a.data("swappedElement")),a.data("scrollWrapper").scrollLeft(a.data("scrollWrapper").scrollLeft()+
a.data("swappedElement").outerWidth(!0)),a.data("getNextElementWidth",!0))}},b.autoScrollInterval))},restoreOriginalElements:function(){var c=this.element;c.data("scrollableArea").html(c.data("originalElements"));this.recalculateScrollableArea();this.moveToElement("first")},show:function(){var c=this.element;c.data("visible",!0);c.show()},hide:function(){var c=this.element;c.data("visible",!1);c.hide()},enable:function(){this.element.data("enabled",!0)},disable:function(){var c=this.element;clearInterval(c.data("autoScrollInterval"));
clearInterval(c.data("rightScrollInterval"));clearInterval(c.data("leftScrollInterval"));clearInterval(c.data("hideHotSpotBackgroundsInterval"));c.data("enabled",!1)},destroy:function(){var c=this.element;clearInterval(c.data("autoScrollInterval"));clearInterval(c.data("rightScrollInterval"));clearInterval(c.data("leftScrollInterval"));clearInterval(c.data("hideHotSpotBackgroundsInterval"));c.data("scrollingHotSpotRight").unbind("mouseover");c.data("scrollingHotSpotRight").unbind("mouseout");c.data("scrollingHotSpotRight").unbind("mousedown");
c.data("scrollingHotSpotLeft").unbind("mouseover");c.data("scrollingHotSpotLeft").unbind("mouseout");c.data("scrollingHotSpotLeft").unbind("mousedown");c.data("scrollableArea").html(c.data("originalElements"));c.data("scrollableArea").removeAttr("style");c.data("scrollingHotSpotRight").removeAttr("style");c.data("scrollingHotSpotLeft").removeAttr("style");c.data("scrollWrapper").scrollLeft(0);c.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");c.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");
c.data("scrollingHotSpotRight").hide();c.data("scrollingHotSpotLeft").hide();d.Widget.prototype.destroy.apply(this,arguments)}})})(jQuery);
