/*
 * jQuery SmoothDivScroll 1.1
 *
 * Copyright (c) 2010 Thomas Kahn
 * Licensed under the GPL license.
 *
 * http://www.maaki.com/thomas/SmoothDivScroll/
 *
 * Depends:
 * jquery.ui.widget.js
 *
 */
/*
 * jQuery SmoothDivScroll 1.1
 *
 * Copyright (c) 2010 Thomas Kahn
 * Licensed under the GPL license.
 *
 * http://www.maaki.com/thomas/SmoothDivScroll/
 *
 * Depends:
 * jquery.ui.widget.js
 *
 */
(function ($) {
    $.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 self = this,
                o = this.options,
                el = this.element;
            el.data("scrollWrapper", el.find(o.scrollWrapper));
            el.data("scrollingHotSpotRight", el.find(o.scrollingHotSpotRight));
            el.data("scrollingHotSpotLeft", el.find(o.scrollingHotSpotLeft));
            el.data("scrollableArea", el.find(o.scrollableArea));
            el.data("speedBooster", 1);
            el.data("motherElementOffset", el.offset().left);
            el.data("scrollXPos", 0);
            el.data("hotSpotWidth", el.find(o.scrollingHotSpotLeft).width());
            el.data("scrollableAreaWidth", 0);
            el.data("startingPosition", 0);
            el.data("rightScrollInterval", null);
            el.data("leftScrollInterval", null);
            el.data("autoScrollInterval", null);
            el.data("hideHotSpotBackgroundsInterval", null);
            el.data("previousScrollLeft", 0);
            el.data("pingPongDirection", "right");
            el.data("getNextElementWidth", true);
            el.data("swapAt", null);
            el.data("startAtElementHasNotPassed", true);
            el.data("swappedElement", null);
            el.data("originalElements", el.data("scrollableArea").children(o.countOnlyClass));
            el.data("visible", true);
            el.data("initialAjaxContentLoaded", false);
            el.data("enabled", true);
            if (o.autoScroll !== "always") {
                switch (o.visibleHotSpots) {
                case "always":
                    self.showHotSpotBackgrounds();
                    break;
                case "onstart":
                    self.showHotSpotBackgrounds();
                    el.data("hideHotSpotBackgroundsInterval", setTimeout(function () {
                        self.hideHotSpotBackgrounds("slow")
                    }, (o.hotSpotsVisibleTime * 1000)));
                    break;
                default:
                    break
                }
            }
            el.data("scrollingHotSpotRight").bind("mousemove", function (e) {
                var x = e.pageX - (this.offsetLeft + el.data("motherElementOffset"));
                el.data("scrollXPos", Math.round((x / el.data("hotSpotWidth")) * o.scrollStep));
                if (el.data("scrollXPos") === Infinity) {
                    el.data("scrollXPos", 0)
                }
            });
            el.data("scrollingHotSpotRight").bind("mouseover", function () {
                if ((o.autoScroll === "onstart" && el.data("autoScrollInterval") !== null)) {
                    clearInterval(el.data("autoScrollInterval"));
                    el.data("autoScrollInterval", null);
                    self._trigger("autoScrollIntervalStopped")
                }
                el.data("rightScrollInterval", setInterval(function () {
                    if (el.data("scrollXPos") > 0 && el.data("enabled")) {
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + (el.data("scrollXPos") * el.data("speedBooster")));
                        self._showHideHotSpots()
                    }
                }, o.scrollInterval));
                self._trigger("mouseOverRightHotSpot")
            });
            el.data("scrollingHotSpotRight").bind("mouseout", function () {
                clearInterval(el.data("rightScrollInterval"));
                el.data("scrollXPos", 0)
            });
            el.data("scrollingHotSpotRight").bind("mousedown", function () {
                el.data("speedBooster", o.mouseDownSpeedBooster)
            });
            $("body").bind("mouseup", function () {
                el.data("speedBooster", 1)
            });
            el.data("scrollingHotSpotLeft").bind("mousemove", function (e) {
                var x = el.data("scrollingHotSpotLeft").innerWidth() - (e.pageX - el.data("motherElementOffset"));
                el.data("scrollXPos", Math.round((x / el.data("hotSpotWidth")) * o.scrollStep));
                if (el.data("scrollXPos") === Infinity) {
                    el.data("scrollXPos", 0)
                }
            });
            el.data("scrollingHotSpotLeft").bind("mouseover", function () {
                if ((o.autoScroll === "onstart" && el.data("autoScrollInterval") !== null)) {
                    clearInterval(el.data("autoScrollInterval"));
                    el.data("autoScrollInterval", null);
                    self._trigger("autoScrollIntervalStopped")
                }
                el.data("leftScrollInterval", setInterval(function () {
                    if (el.data("scrollXPos") > 0 && el.data("enabled")) {
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - (el.data("scrollXPos") * el.data("speedBooster")));
                        self._showHideHotSpots()
                    }
                }, o.scrollInterval));
                self._trigger("mouseOverLeftHotSpot")
            });
            el.data("scrollingHotSpotLeft").bind("mouseout", function () {
                clearInterval(el.data("leftScrollInterval"));
                el.data("scrollXPos", 0)
            });
            el.data("scrollingHotSpotLeft").bind("mousedown", function () {
                el.data("speedBooster", o.mouseDownSpeedBooster)
            });
            $(window).bind("resize", function () {
                if (!(o.hiddenOnStart)) {
                    self._showHideHotSpots()
                }
                self._trigger("windowResized")
            });
            if (o.ajaxContentURL.length > 0) {
                self.replaceContent(o.ajaxContentURL)
            } else {
                self.recalculateScrollableArea()
            }
            if (o.hiddenOnStart) {
                self.hide()
            }
            if ((o.autoScroll.length > 0) && !(o.hiddenOnStart) && (o.ajaxContentURL.length <= 0)) {
                self.startAutoScroll()
            }
        },
        showHotSpotBackgrounds: function (fadeSpeed) {
            var self = this,
                el = this.element;
            if (fadeSpeed !== undefined) {
                el.data("scrollingHotSpotLeft").css("opacity", "0.0");
                el.data("scrollingHotSpotRight").css("opacity", "0.0");
                el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");
                el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed, 0.35);
                el.data("scrollingHotSpotRight").fadeTo(fadeSpeed, 0.35)
            } else {
                el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotLeft").removeAttr("style");
                el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");
                el.data("scrollingHotSpotRight").removeAttr("style")
            }
            self._showHideHotSpots()
        },
        hideHotSpotBackgrounds: function (fadeSpeed) {
            var el = this.element;
            if (fadeSpeed !== undefined) {
                el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed, 0.0, function () {
                    el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible")
                });
                el.data("scrollingHotSpotRight").fadeTo(fadeSpeed, 0.0, function () {
                    el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible")
                })
            } else {
                el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotLeft").removeAttr("style");
                el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");
                el.data("scrollingHotSpotRight").removeAttr("style")
            }
        },
        _showHideHotSpots: function () {
            var self = this,
                el = this.element,
                o = this.options;
            if (o.autoScroll !== "always") {
                if (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth())) {
                    el.data("scrollingHotSpotLeft").hide();
                    el.data("scrollingHotSpotRight").hide()
                } else if (el.data("scrollWrapper").scrollLeft() === 0) {
                    el.data("scrollingHotSpotLeft").hide();
                    el.data("scrollingHotSpotRight").show();
                    self._trigger("scrollLeftLimitReached");
                    clearInterval(el.data("leftScrollInterval"));
                    el.data("leftScrollInterval", null)
                } else if (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth() + el.data("scrollWrapper").scrollLeft())) {
                    el.data("scrollingHotSpotLeft").show();
                    el.data("scrollingHotSpotRight").hide();
                    self._trigger("scrollRightLimitReached");
                    clearInterval(el.data("rightScrollInterval"));
                    el.data("rightScrollInterval", null)
                } else {
                    el.data("scrollingHotSpotLeft").show();
                    el.data("scrollingHotSpotRight").show()
                }
            } else {
                el.data("scrollingHotSpotLeft").hide();
                el.data("scrollingHotSpotRight").hide()
            }
        },
        moveToElement: function (moveTo, elementNumber) {
            var self = this,
                el = this.element,
                o = this.options,
                tempScrollableAreaWidth = 0,
                foundStartAtElement = false;
            switch (moveTo) {
            case "first":
                el.data("scrollXPos", 0);
                self._trigger("movedToFirstElement");
                break;
            case "start":
                el.data("scrollableArea").children(o.countOnlyClass).each(function () {
                    if ((o.startAtElementId.length > 0) && (($(this).attr("id")) === o.startAtElementId)) {
                        el.data("startingPosition", tempScrollableAreaWidth);
                        foundStartAtElement = true
                    }
                    tempScrollableAreaWidth = tempScrollableAreaWidth + $(this).outerWidth(true)
                });
                el.data("scrollXPos", el.data("startingPosition"));
                self._trigger("movedToStartElement");
                break;
            case "last":
                el.data("scrollXPos", el.data("scrollableAreaWidth"));
                self._trigger("movedToLastElement");
                break;
            case "number":
                if (!(isNaN(elementNumber))) {
                    el.data("scrollableArea").children(o.countOnlyClass).each(function (index) {
                        if (index === (elementNumber - 1)) {
                            el.data("scrollXPos", tempScrollableAreaWidth)
                        }
                        tempScrollableAreaWidth = tempScrollableAreaWidth + $(this).outerWidth(true)
                    })
                }
                self._trigger("movedToElementNumber", null, {
                    "elementNumber": elementNumber
                });
                break;
            default:
                break
            }
            el.data("scrollWrapper").scrollLeft(el.data("scrollXPos"));
            self._showHideHotSpots()
        },
        addContent: function (ajaxContentURL, addWhere) {
            var self = this,
                el = this.element;
            $.get(ajaxContentURL, function (data) {
                if (addWhere === "first") {
                    el.data("scrollableArea").children(":first").before(data)
                } else {
                    el.data("scrollableArea").children(":last").after(data)
                }
                self.recalculateScrollableArea();
                self._showHideHotSpots()
            })
        },
        replaceContent: function (ajaxContentURL) {
            var self = this,
                el = this.element;
            el.data("scrollableArea").load(ajaxContentURL, function () {
                self.recalculateScrollableArea();
                self.moveToElement("first");
                self._showHideHotSpots();
                el.data("startingPosition", 0)
            })
        },
        recalculateScrollableArea: function () {
            var tempScrollableAreaWidth = 0,
                foundStartAtElement = false,
                o = this.options,
                el = this.element,
                self = this;
            el.data("scrollableArea").children(o.countOnlyClass).each(function () {
                if ((o.startAtElementId.length > 0) && (($(this).attr("id")) === o.startAtElementId)) {
                    el.data("startingPosition", tempScrollableAreaWidth);
                    foundStartAtElement = true
                }
                tempScrollableAreaWidth = tempScrollableAreaWidth + $(this).outerWidth(true)
            });
            if (!(foundStartAtElement)) {
                el.data("startAtElementId", "")
            }
            el.data("scrollableAreaWidth", tempScrollableAreaWidth);
            el.data("scrollableArea").width(el.data("scrollableAreaWidth"));
            el.data("scrollWrapper").scrollLeft(el.data("startingPosition"));
            el.data("scrollXPos", el.data("startingPosition"));
            if (!(el.data("initialAjaxContentLoaded"))) {
                if ((o.autoScroll.length > 0) && !(o.hiddenOnStart) && (o.ajaxContentURL.length > 0)) {
                    self.startAutoScroll();
                    el.data("initialAjaxContentLoaded", true)
                }
            }
        },
        stopAutoScroll: function () {
            var self = this,
                el = this.element;
            clearInterval(el.data("autoScrollInterval"));
            el.data("autoScrollInterval", null);
            self._showHideHotSpots();
            self._trigger("autoScrollStopped")
        },
        startAutoScroll: function () {
            var self = this,
                el = this.element,
                o = this.options;
            self._showHideHotSpots();
            clearInterval(el.data("autoScrollInterval"));
            el.data("autoScrollInterval", null);
            self._trigger("autoScrollStarted");
            el.data("autoScrollInterval", setInterval(function () {
                if (!(el.data("visible")) || (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth()))) {
                    clearInterval(el.data("autoScrollInterval"));
                    el.data("autoScrollInterval", null)
                } else {
                    el.data("previousScrollLeft", el.data("scrollWrapper").scrollLeft());
                    switch (o.autoScrollDirection) {
                    case "right":
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + o.autoScrollStep);
                        if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
                            self._trigger("autoScrollRightLimitReached");
                            clearInterval(el.data("autoScrollInterval"));
                            el.data("autoScrollInterval", null);
                            self._trigger("autoScrollIntervalStopped")
                        }
                        break;
                    case "left":
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - o.autoScrollStep);
                        if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
                            self._trigger("autoScrollLeftLimitReached");
                            clearInterval(el.data("autoScrollInterval"));
                            el.data("autoScrollInterval", null);
                            self._trigger("autoScrollIntervalStopped")
                        }
                        break;
                    case "backandforth":
                        if (el.data("pingPongDirection") === "right") {
                            el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + (o.autoScrollStep))
                        } else {
                            el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - (o.autoScrollStep))
                        }
                        if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
                            if (el.data("pingPongDirection") === "right") {
                                el.data("pingPongDirection", "left");
                                self._trigger("autoScrollRightLimitReached")
                            } else {
                                el.data("pingPongDirection", "right");
                                self._trigger("autoScrollLeftLimitReached")
                            }
                        }
                        break;
                    case "endlessloopright":
                        if (el.data("getNextElementWidth")) {
                            if ((o.startAtElementId.length > 0) && (el.data("startAtElementHasNotPassed"))) {
                                el.data("swapAt", $("#" + o.startAtElementId).outerWidth(true));
                                el.data("startAtElementHasNotPassed", false)
                            } else {
                                el.data("swapAt", el.data("scrollableArea").children(":first").outerWidth(true))
                            }
                            el.data("getNextElementWidth", false)
                        }
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + o.autoScrollStep);
                        if (el.data("swapAt") <= el.data("scrollWrapper").scrollLeft()) {
                            el.data("swappedElement", el.data("scrollableArea").children(":first").detach());
                            el.data("scrollableArea").append(el.data("swappedElement"));
                            el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - el.data("swappedElement").outerWidth(true));
                            el.data("getNextElementWidth", true)
                        }
                        break;
                    case "endlessloopleft":
                        if (el.data("getNextElementWidth")) {
                            if ((o.startAtElementId.length > 0) && (el.data("startAtElementHasNotPassed"))) {
                                el.data("swapAt", $("#" + o.startAtElementId).outerWidth(true));
                                el.data("startAtElementHasNotPassed", false)
                            } else {
                                el.data("swapAt", el.data("scrollableArea").children(":first").outerWidth(true))
                            }
                            el.data("getNextElementWidth", false)
                        }
                        el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - o.autoScrollStep);
                        if (el.data("scrollWrapper").scrollLeft() === 0) {
                            el.data("swappedElement", el.data("scrollableArea").children(":last").detach());
                            el.data("scrollableArea").prepend(el.data("swappedElement"));
                            el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + el.data("swappedElement").outerWidth(true));
                            el.data("getNextElementWidth", true)
                        }
                        break;
                    default:
                        break
                    }
                }
            }, o.autoScrollInterval))
        },
        restoreOriginalElements: function () {
            var self = this,
                el = this.element;
            el.data("scrollableArea").html(el.data("originalElements"));
            self.recalculateScrollableArea();
            self.moveToElement("first")
        },
        show: function () {
            var el = this.element;
            el.data("visible", true);
            el.show()
        },
        hide: function () {
            var el = this.element;
            el.data("visible", false);
            el.hide()
        },
        enable: function () {
            var el = this.element;
            el.data("enabled", true)
        },
        disable: function () {
            var el = this.element;
            clearInterval(el.data("autoScrollInterval"));
            clearInterval(el.data("rightScrollInterval"));
            clearInterval(el.data("leftScrollInterval"));
            clearInterval(el.data("hideHotSpotBackgroundsInterval"));
            el.data("enabled", false)
        },
        destroy: function () {
            var el = this.element;
            clearInterval(el.data("autoScrollInterval"));
            clearInterval(el.data("rightScrollInterval"));
            clearInterval(el.data("leftScrollInterval"));
            clearInterval(el.data("hideHotSpotBackgroundsInterval"));
            el.data("scrollingHotSpotRight").unbind("mouseover");
            el.data("scrollingHotSpotRight").unbind("mouseout");
            el.data("scrollingHotSpotRight").unbind("mousedown");
            el.data("scrollingHotSpotLeft").unbind("mouseover");
            el.data("scrollingHotSpotLeft").unbind("mouseout");
            el.data("scrollingHotSpotLeft").unbind("mousedown");
            el.data("scrollableArea").html(el.data("originalElements"));
            el.data("scrollableArea").removeAttr("style");
            el.data("scrollingHotSpotRight").removeAttr("style");
            el.data("scrollingHotSpotLeft").removeAttr("style");
            el.data("scrollWrapper").scrollLeft(0);
            el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");
            el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");
            el.data("scrollingHotSpotRight").hide();
            el.data("scrollingHotSpotLeft").hide();
            $.Widget.prototype.destroy.apply(this, arguments)
        }
    })
})(jQuery);
//(function($){$.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 self=this,o=this.options,el=this.element;el.data("scrollWrapper",el.find(o.scrollWrapper));el.data("scrollingHotSpotRight",el.find(o.scrollingHotSpotRight));el.data("scrollingHotSpotLeft",el.find(o.scrollingHotSpotLeft));el.data("scrollableArea",el.find(o.scrollableArea));el.data("speedBooster",1);el.data("motherElementOffset",el.offset().left);el.data("scrollXPos",0);el.data("hotSpotWidth",el.find(o.scrollingHotSpotLeft).width());el.data("scrollableAreaWidth",0);el.data("startingPosition",0);el.data("rightScrollInterval",null);el.data("leftScrollInterval",null);el.data("autoScrollInterval",null);el.data("hideHotSpotBackgroundsInterval",null);el.data("previousScrollLeft",0);el.data("pingPongDirection","right");el.data("getNextElementWidth",true);el.data("swapAt",null);el.data("startAtElementHasNotPassed",true);el.data("swappedElement",null);el.data("originalElements",el.data("scrollableArea").children(o.countOnlyClass));el.data("visible",true);el.data("initialAjaxContentLoaded",false);el.data("enabled",true);if(o.autoScroll!=="always"){switch(o.visibleHotSpots){case"always":self.showHotSpotBackgrounds();break;case"onstart":self.showHotSpotBackgrounds();el.data("hideHotSpotBackgroundsInterval",setTimeout(function(){self.hideHotSpotBackgrounds("slow")},(o.hotSpotsVisibleTime*1000)));break;default:break}}el.data("scrollingHotSpotRight").bind("mousemove",function(e){var x=e.pageX-(this.offsetLeft+el.data("motherElementOffset"));el.data("scrollXPos",Math.round((x/el.data("hotSpotWidth"))*o.scrollStep));if(el.data("scrollXPos")===Infinity){el.data("scrollXPos",0)}});el.data("scrollingHotSpotRight").bind("mouseover",function(){if((o.autoScroll==="onstart"&&el.data("autoScrollInterval")!==null)){clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._trigger("autoScrollIntervalStopped")}el.data("rightScrollInterval",setInterval(function(){if(el.data("scrollXPos")>0&&el.data("enabled")){el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()+(el.data("scrollXPos")*el.data("speedBooster")));self._showHideHotSpots()}},o.scrollInterval));self._trigger("mouseOverRightHotSpot")});el.data("scrollingHotSpotRight").bind("mouseout",function(){clearInterval(el.data("rightScrollInterval"));el.data("scrollXPos",0)});el.data("scrollingHotSpotRight").bind("mousedown",function(){el.data("speedBooster",o.mouseDownSpeedBooster)});$("body").bind("mouseup",function(){el.data("speedBooster",1)});el.data("scrollingHotSpotLeft").bind("mousemove",function(e){var x=el.data("scrollingHotSpotLeft").innerWidth()-(e.pageX-el.data("motherElementOffset"));el.data("scrollXPos",Math.round((x/el.data("hotSpotWidth"))*o.scrollStep));if(el.data("scrollXPos")===Infinity){el.data("scrollXPos",0)}});el.data("scrollingHotSpotLeft").bind("mouseover",function(){if((o.autoScroll==="onstart"&&el.data("autoScrollInterval")!==null)){clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._trigger("autoScrollIntervalStopped")}el.data("leftScrollInterval",setInterval(function(){if(el.data("scrollXPos")>0&&el.data("enabled")){el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()-(el.data("scrollXPos")*el.data("speedBooster")));self._showHideHotSpots()}},o.scrollInterval));self._trigger("mouseOverLeftHotSpot")});el.data("scrollingHotSpotLeft").bind("mouseout",function(){clearInterval(el.data("leftScrollInterval"));el.data("scrollXPos",0)});el.data("scrollingHotSpotLeft").bind("mousedown",function(){el.data("speedBooster",o.mouseDownSpeedBooster)});$(window).bind("resize",function(){if(!(o.hiddenOnStart)){self._showHideHotSpots()}self._trigger("windowResized")});if(o.ajaxContentURL.length>0){self.replaceContent(o.ajaxContentURL)}else{self.recalculateScrollableArea()}if(o.hiddenOnStart){self.hide()}if((o.autoScroll.length>0)&&!(o.hiddenOnStart)&&(o.ajaxContentURL.length<=0)){self.startAutoScroll()}},showHotSpotBackgrounds:function(fadeSpeed){var self=this,el=this.element;if(fadeSpeed!==undefined){el.data("scrollingHotSpotLeft").css("opacity","0.0");el.data("scrollingHotSpotRight").css("opacity","0.0");el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed,0.35);el.data("scrollingHotSpotRight").fadeTo(fadeSpeed,0.35)}else{el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");el.data("scrollingHotSpotLeft").removeAttr("style");el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");el.data("scrollingHotSpotRight").removeAttr("style")}self._showHideHotSpots()},hideHotSpotBackgrounds:function(fadeSpeed){var el=this.element;if(fadeSpeed!==undefined){el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed,0.0,function(){el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible")});el.data("scrollingHotSpotRight").fadeTo(fadeSpeed,0.0,function(){el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible")})}else{el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");el.data("scrollingHotSpotLeft").removeAttr("style");el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");el.data("scrollingHotSpotRight").removeAttr("style")}},_showHideHotSpots:function(){var self=this,el=this.element,o=this.options;if(o.autoScroll!=="always"){if(el.data("scrollableAreaWidth")<=(el.data("scrollWrapper").innerWidth())){el.data("scrollingHotSpotLeft").hide();el.data("scrollingHotSpotRight").hide()}else if(el.data("scrollWrapper").scrollLeft()===0){el.data("scrollingHotSpotLeft").hide();el.data("scrollingHotSpotRight").show();self._trigger("scrollLeftLimitReached");clearInterval(el.data("leftScrollInterval"));el.data("leftScrollInterval",null)}else if(el.data("scrollableAreaWidth")<=(el.data("scrollWrapper").innerWidth()+el.data("scrollWrapper").scrollLeft())){el.data("scrollingHotSpotLeft").show();el.data("scrollingHotSpotRight").hide();self._trigger("scrollRightLimitReached");clearInterval(el.data("rightScrollInterval"));el.data("rightScrollInterval",null)}else{el.data("scrollingHotSpotLeft").show();el.data("scrollingHotSpotRight").show()}}else{el.data("scrollingHotSpotLeft").hide();el.data("scrollingHotSpotRight").hide()}},moveToElement:function(moveTo,elementNumber){var self=this,el=this.element,o=this.options,tempScrollableAreaWidth=0,foundStartAtElement=false;switch(moveTo){case"first":el.data("scrollXPos",0);self._trigger("movedToFirstElement");break;case"start":el.data("scrollableArea").children(o.countOnlyClass).each(function(){if((o.startAtElementId.length>0)&&(($(this).attr("id"))===o.startAtElementId)){el.data("startingPosition",tempScrollableAreaWidth);foundStartAtElement=true}tempScrollableAreaWidth=tempScrollableAreaWidth+$(this).outerWidth(true)});el.data("scrollXPos",el.data("startingPosition"));self._trigger("movedToStartElement");break;case"last":el.data("scrollXPos",el.data("scrollableAreaWidth"));self._trigger("movedToLastElement");break;case"number":if(!(isNaN(elementNumber))){el.data("scrollableArea").children(o.countOnlyClass).each(function(index){if(index===(elementNumber-1)){el.data("scrollXPos",tempScrollableAreaWidth)}tempScrollableAreaWidth=tempScrollableAreaWidth+$(this).outerWidth(true)})}self._trigger("movedToElementNumber",null,{"elementNumber":elementNumber});break;default:break}el.data("scrollWrapper").scrollLeft(el.data("scrollXPos"));self._showHideHotSpots()},addContent:function(ajaxContentURL,addWhere){var self=this,el=this.element;$.get(ajaxContentURL,function(data){if(addWhere==="first"){el.data("scrollableArea").children(":first").before(data)}else{el.data("scrollableArea").children(":last").after(data)}self.recalculateScrollableArea();self._showHideHotSpots()})},replaceContent:function(ajaxContentURL){var self=this,el=this.element;el.data("scrollableArea").load(ajaxContentURL,function(){self.recalculateScrollableArea();self.moveToElement("first");self._showHideHotSpots();el.data("startingPosition",0)})},recalculateScrollableArea:function(){var tempScrollableAreaWidth=0,foundStartAtElement=false,o=this.options,el=this.element,self=this;el.data("scrollableArea").children(o.countOnlyClass).each(function(){if((o.startAtElementId.length>0)&&(($(this).attr("id"))===o.startAtElementId)){el.data("startingPosition",tempScrollableAreaWidth);foundStartAtElement=true}tempScrollableAreaWidth=tempScrollableAreaWidth+$(this).outerWidth(true)});if(!(foundStartAtElement)){el.data("startAtElementId","")}el.data("scrollableAreaWidth",tempScrollableAreaWidth);el.data("scrollableArea").width(el.data("scrollableAreaWidth"));el.data("scrollWrapper").scrollLeft(el.data("startingPosition"));el.data("scrollXPos",el.data("startingPosition"));if(!(el.data("initialAjaxContentLoaded"))){if((o.autoScroll.length>0)&&!(o.hiddenOnStart)&&(o.ajaxContentURL.length>0)){self.startAutoScroll();el.data("initialAjaxContentLoaded",true)}}},stopAutoScroll:function(){var self=this,el=this.element;clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._showHideHotSpots();self._trigger("autoScrollStopped")},startAutoScroll:function(){var self=this,el=this.element,o=this.options;self._showHideHotSpots();clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._trigger("autoScrollStarted");el.data("autoScrollInterval",setInterval(function(){if(!(el.data("visible"))||(el.data("scrollableAreaWidth")<=(el.data("scrollWrapper").innerWidth()))){clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null)}else{el.data("previousScrollLeft",el.data("scrollWrapper").scrollLeft());switch(o.autoScrollDirection){case"right":el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()+o.autoScrollStep);if(el.data("previousScrollLeft")===el.data("scrollWrapper").scrollLeft()){self._trigger("autoScrollRightLimitReached");clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._trigger("autoScrollIntervalStopped")}break;case"left":el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()-o.autoScrollStep);if(el.data("previousScrollLeft")===el.data("scrollWrapper").scrollLeft()){self._trigger("autoScrollLeftLimitReached");clearInterval(el.data("autoScrollInterval"));el.data("autoScrollInterval",null);self._trigger("autoScrollIntervalStopped")}break;case"backandforth":if(el.data("pingPongDirection")==="right"){el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()+(o.autoScrollStep))}else{el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()-(o.autoScrollStep))}if(el.data("previousScrollLeft")===el.data("scrollWrapper").scrollLeft()){if(el.data("pingPongDirection")==="right"){el.data("pingPongDirection","left");self._trigger("autoScrollRightLimitReached")}else{el.data("pingPongDirection","right");self._trigger("autoScrollLeftLimitReached")}}break;case"endlessloopright":if(el.data("getNextElementWidth")){if((o.startAtElementId.length>0)&&(el.data("startAtElementHasNotPassed"))){el.data("swapAt",$("#"+o.startAtElementId).outerWidth(true));el.data("startAtElementHasNotPassed",false)}else{el.data("swapAt",el.data("scrollableArea").children(":first").outerWidth(true))}el.data("getNextElementWidth",false)}el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()+o.autoScrollStep);if(el.data("swapAt")<=el.data("scrollWrapper").scrollLeft()){el.data("swappedElement",el.data("scrollableArea").children(":first").detach());el.data("scrollableArea").append(el.data("swappedElement"));el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()-el.data("swappedElement").outerWidth(true));el.data("getNextElementWidth",true)}break;case"endlessloopleft":if(el.data("getNextElementWidth")){if((o.startAtElementId.length>0)&&(el.data("startAtElementHasNotPassed"))){el.data("swapAt",$("#"+o.startAtElementId).outerWidth(true));el.data("startAtElementHasNotPassed",false)}else{el.data("swapAt",el.data("scrollableArea").children(":first").outerWidth(true))}el.data("getNextElementWidth",false)}el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()-o.autoScrollStep);if(el.data("scrollWrapper").scrollLeft()===0){el.data("swappedElement",el.data("scrollableArea").children(":last").detach());el.data("scrollableArea").prepend(el.data("swappedElement"));el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft()+el.data("swappedElement").outerWidth(true));el.data("getNextElementWidth",true)}break;default:break}}},o.autoScrollInterval))},restoreOriginalElements:function(){var self=this,el=this.element;el.data("scrollableArea").html(el.data("originalElements"));self.recalculateScrollableArea();self.moveToElement("first")},show:function(){var el=this.element;el.data("visible",true);el.show()},hide:function(){var el=this.element;el.data("visible",false);el.hide()},enable:function(){var el=this.element;el.data("enabled",true)},disable:function(){var el=this.element;clearInterval(el.data("autoScrollInterval"));clearInterval(el.data("rightScrollInterval"));clearInterval(el.data("leftScrollInterval"));clearInterval(el.data("hideHotSpotBackgroundsInterval"));el.data("enabled",false)},destroy:function(){var el=this.element;clearInterval(el.data("autoScrollInterval"));clearInterval(el.data("rightScrollInterval"));clearInterval(el.data("leftScrollInterval"));clearInterval(el.data("hideHotSpotBackgroundsInterval"));el.data("scrollingHotSpotRight").unbind("mouseover");el.data("scrollingHotSpotRight").unbind("mouseout");el.data("scrollingHotSpotRight").unbind("mousedown");el.data("scrollingHotSpotLeft").unbind("mouseover");el.data("scrollingHotSpotLeft").unbind("mouseout");el.data("scrollingHotSpotLeft").unbind("mousedown");el.data("scrollableArea").html(el.data("originalElements"));el.data("scrollableArea").removeAttr("style");el.data("scrollingHotSpotRight").removeAttr("style");el.data("scrollingHotSpotLeft").removeAttr("style");el.data("scrollWrapper").scrollLeft(0);el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");el.data("scrollingHotSpotRight").hide();el.data("scrollingHotSpotLeft").hide();$.Widget.prototype.destroy.apply(this,arguments)}})})(jQuery);
