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