/*jQuery UI Widget 1.8.16*/

(function (b, j) {
    if (b.cleanData) { var k = b.cleanData; b.cleanData = function (a) { for (var c = 0, d; (d = a[c]) != null; c++) try { b(d).triggerHandler("remove") } catch (e) { } k(a) } } else { var l = b.fn.remove; b.fn.remove = function (a, c) { return this.each(function () { if (!c) if (!a || b.filter(a, [this]).length) b("*", this).add([this]).each(function () { try { b(this).triggerHandler("remove") } catch (d) { } }); return l.call(b(this), a, c) }) } } b.widget = function (a, c, d) {
        var e = a.split(".")[0], f; a = a.split(".")[1]; f = e + "-" + a; if (!d) { d = c; c = b.Widget } b.expr[":"][f] =
function (h) { return !!b.data(h, a) }; b[e] = b[e] || {}; b[e][a] = function (h, g) { arguments.length && this._createWidget(h, g) }; c = new c; c.options = b.extend(true, {}, c.options); b[e][a].prototype = b.extend(true, c, { namespace: e, widgetName: a, widgetEventPrefix: b[e][a].prototype.widgetEventPrefix || a, widgetBaseClass: f }, d); b.widget.bridge(a, b[e][a])
    }; b.widget.bridge = function (a, c) {
        b.fn[a] = function (d) {
            var e = typeof d === "string", f = Array.prototype.slice.call(arguments, 1), h = this; d = !e && f.length ? b.extend.apply(null, [true, d].concat(f)) :
d; if (e && d.charAt(0) === "_") return h; e ? this.each(function () { var g = b.data(this, a), i = g && b.isFunction(g[d]) ? g[d].apply(g, f) : g; if (i !== g && i !== j) { h = i; return false } }) : this.each(function () { var g = b.data(this, a); g ? g.option(d || {})._init() : b.data(this, a, new c(d, this)) }); return h
        } 
    }; b.Widget = function (a, c) { arguments.length && this._createWidget(a, c) }; b.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", options: { disabled: false }, _createWidget: function (a, c) {
        b.data(c, this.widgetName, this); this.element = b(c); this.options =
b.extend(true, {}, this.options, this._getCreateOptions(), a); var d = this; this.element.bind("remove." + this.widgetName, function () { d.destroy() }); this._create(); this._trigger("create"); this._init()
    }, _getCreateOptions: function () { return b.metadata && b.metadata.get(this.element[0])[this.widgetName] }, _create: function () { }, _init: function () { }, destroy: function () {
        this.element.unbind("." + this.widgetName).removeData(this.widgetName); this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass +
"-disabled ui-state-disabled")
    }, widget: function () { return this.element }, option: function (a, c) { var d = a; if (arguments.length === 0) return b.extend({}, this.options); if (typeof a === "string") { if (c === j) return this.options[a]; d = {}; d[a] = c } this._setOptions(d); return this }, _setOptions: function (a) { var c = this; b.each(a, function (d, e) { c._setOption(d, e) }); return this }, _setOption: function (a, c) {
        this.options[a] = c; if (a === "disabled") this.widget()[c ? "addClass" : "removeClass"](this.widgetBaseClass + "-disabled ui-state-disabled").attr("aria-disabled",
c); return this
    }, enable: function () { return this._setOption("disabled", false) }, disable: function () { return this._setOption("disabled", true) }, _trigger: function (a, c, d) { var e = this.options[a]; c = b.Event(c); c.type = (a === this.widgetEventPrefix ? a : this.widgetEventPrefix + a).toLowerCase(); d = d || {}; if (c.originalEvent) { a = b.event.props.length; for (var f; a; ) { f = b.event.props[--a]; c[f] = c.originalEvent[f] } } this.element.trigger(c, d); return !(b.isFunction(e) && e.call(this.element[0], c, d) === false || c.isDefaultPrevented()) } 
    }
})(jQuery);
;


/*
* jQuery UI Effects 1.8.5
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Effects/
*/
jQuery.effects || function (f, j) {
    function l(c) {
        var a; if (c && c.constructor == Array && c.length == 3) return c; if (a = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c)) return [parseInt(a[1], 10), parseInt(a[2], 10), parseInt(a[3], 10)]; if (a = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c)) return [parseFloat(a[1]) * 2.55, parseFloat(a[2]) * 2.55, parseFloat(a[3]) * 2.55]; if (a = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)) return [parseInt(a[1],
16), parseInt(a[2], 16), parseInt(a[3], 16)]; if (a = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)) return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16)]; if (/rgba\(0, 0, 0, 0\)/.exec(c)) return m.transparent; return m[f.trim(c).toLowerCase()]
    } function r(c, a) { var b; do { b = f.curCSS(c, a); if (b != "" && b != "transparent" || f.nodeName(c, "body")) break; a = "backgroundColor" } while (c = c.parentNode); return l(b) } function n() {
        var c = document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle,
a = {}, b, d; if (c && c.length && c[0] && c[c[0]]) for (var e = c.length; e--; ) { b = c[e]; if (typeof c[b] == "string") { d = b.replace(/\-(\w)/g, function (g, h) { return h.toUpperCase() }); a[d] = c[b] } } else for (b in c) if (typeof c[b] === "string") a[b] = c[b]; return a
    } function o(c) { var a, b; for (a in c) { b = c[a]; if (b == null || f.isFunction(b) || a in s || /scrollbar/.test(a) || !/color/i.test(a) && isNaN(parseFloat(b))) delete c[a] } return c } function t(c, a) { var b = { _: 0 }, d; for (d in a) if (c[d] != a[d]) b[d] = a[d]; return b } function k(c, a, b, d) {
        if (typeof c == "object") {
            d =
a; b = null; a = c; c = a.effect
        } if (f.isFunction(a)) { d = a; b = null; a = {} } if (typeof a == "number" || f.fx.speeds[a]) { d = b; b = a; a = {} } if (f.isFunction(b)) { d = b; b = null } a = a || {}; b = b || a.duration; b = f.fx.off ? 0 : typeof b == "number" ? b : f.fx.speeds[b] || f.fx.speeds._default; d = d || a.complete; return [c, a, b, d]
    } f.effects = {}; f.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function (c, a) {
        f.fx.step[a] = function (b) {
            if (!b.colorInit) {
                b.start = r(b.elem, a); b.end = l(b.end); b.colorInit =
true
            } b.elem.style[a] = "rgb(" + Math.max(Math.min(parseInt(b.pos * (b.end[0] - b.start[0]) + b.start[0], 10), 255), 0) + "," + Math.max(Math.min(parseInt(b.pos * (b.end[1] - b.start[1]) + b.start[1], 10), 255), 0) + "," + Math.max(Math.min(parseInt(b.pos * (b.end[2] - b.start[2]) + b.start[2], 10), 255), 0) + ")"
        } 
    }); var m = { aqua: [0, 255, 255], azure: [240, 255, 255], beige: [245, 245, 220], black: [0, 0, 0], blue: [0, 0, 255], brown: [165, 42, 42], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgrey: [169, 169, 169], darkgreen: [0, 100, 0], darkkhaki: [189,
183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkviolet: [148, 0, 211], fuchsia: [255, 0, 255], gold: [255, 215, 0], green: [0, 128, 0], indigo: [75, 0, 130], khaki: [240, 230, 140], lightblue: [173, 216, 230], lightcyan: [224, 255, 255], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightyellow: [255, 255, 224], lime: [0, 255, 0], magenta: [255, 0, 255], maroon: [128, 0, 0], navy: [0, 0, 128], olive: [128, 128, 0], orange: [255,
165, 0], pink: [255, 192, 203], purple: [128, 0, 128], violet: [128, 0, 128], red: [255, 0, 0], silver: [192, 192, 192], white: [255, 255, 255], yellow: [255, 255, 0], transparent: [255, 255, 255]
    }, p = ["add", "remove", "toggle"], s = { border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; f.effects.animateClass = function (c, a, b, d) {
        if (f.isFunction(b)) { d = b; b = null } return this.each(function () {
            var e = f(this), g = e.attr("style") || " ", h = o(n.call(this)), q, u = e.attr("className"); f.each(p, function (v,
i) { c[i] && e[i + "Class"](c[i]) }); q = o(n.call(this)); e.attr("className", u); e.animate(t(h, q), a, b, function () { f.each(p, function (v, i) { c[i] && e[i + "Class"](c[i]) }); if (typeof e.attr("style") == "object") { e.attr("style").cssText = ""; e.attr("style").cssText = g } else e.attr("style", g); d && d.apply(this, arguments) })
        })
    }; f.fn.extend({ _addClass: f.fn.addClass, addClass: function (c, a, b, d) { return a ? f.effects.animateClass.apply(this, [{ add: c }, a, b, d]) : this._addClass(c) }, _removeClass: f.fn.removeClass, removeClass: function (c, a, b, d) {
        return a ?
f.effects.animateClass.apply(this, [{ remove: c }, a, b, d]) : this._removeClass(c)
    }, _toggleClass: f.fn.toggleClass, toggleClass: function (c, a, b, d, e) { return typeof a == "boolean" || a === j ? b ? f.effects.animateClass.apply(this, [a ? { add: c} : { remove: c }, b, d, e]) : this._toggleClass(c, a) : f.effects.animateClass.apply(this, [{ toggle: c }, a, b, d]) }, switchClass: function (c, a, b, d, e) { return f.effects.animateClass.apply(this, [{ add: a, remove: c }, b, d, e]) } 
    }); f.extend(f.effects, { version: "1.8.5", save: function (c, a) {
        for (var b = 0; b < a.length; b++) a[b] !==
null && c.data("ec.storage." + a[b], c[0].style[a[b]])
    }, restore: function (c, a) { for (var b = 0; b < a.length; b++) a[b] !== null && c.css(a[b], c.data("ec.storage." + a[b])) }, setMode: function (c, a) { if (a == "toggle") a = c.is(":hidden") ? "show" : "hide"; return a }, getBaseline: function (c, a) { var b; switch (c[0]) { case "top": b = 0; break; case "middle": b = 0.5; break; case "bottom": b = 1; break; default: b = c[0] / a.height } switch (c[1]) { case "left": c = 0; break; case "center": c = 0.5; break; case "right": c = 1; break; default: c = c[1] / a.width } return { x: c, y: b} }, createWrapper: function (c) {
        if (c.parent().is(".ui-effects-wrapper")) return c.parent();
        var a = { width: c.outerWidth(true), height: c.outerHeight(true), "float": c.css("float") }, b = f("<div></div>").addClass("ui-effects-wrapper").css({ fontSize: "100%", background: "transparent", border: "none", margin: 0, padding: 0 }); c.wrap(b); b = c.parent(); if (c.css("position") == "static") { b.css({ position: "relative" }); c.css({ position: "relative" }) } else {
            f.extend(a, { position: c.css("position"), zIndex: c.css("z-index") }); f.each(["top", "left", "bottom", "right"], function (d, e) { a[e] = c.css(e); if (isNaN(parseInt(a[e], 10))) a[e] = "auto" });
            c.css({ position: "relative", top: 0, left: 0 })
        } return b.css(a).show()
    }, removeWrapper: function (c) { if (c.parent().is(".ui-effects-wrapper")) return c.parent().replaceWith(c); return c }, setTransition: function (c, a, b, d) { d = d || {}; f.each(a, function (e, g) { unit = c.cssUnit(g); if (unit[0] > 0) d[g] = unit[0] * b + unit[1] }); return d } 
    }); f.fn.extend({ effect: function (c) { var a = k.apply(this, arguments); a = { options: a[1], duration: a[2], callback: a[3] }; var b = f.effects[c]; return b && !f.fx.off ? b.call(this, a) : this }, _show: f.fn.show, show: function (c) {
        if (!c ||
typeof c == "number" || f.fx.speeds[c] || !f.effects[c]) return this._show.apply(this, arguments); else { var a = k.apply(this, arguments); a[1].mode = "show"; return this.effect.apply(this, a) } 
    }, _hide: f.fn.hide, hide: function (c) { if (!c || typeof c == "number" || f.fx.speeds[c] || !f.effects[c]) return this._hide.apply(this, arguments); else { var a = k.apply(this, arguments); a[1].mode = "hide"; return this.effect.apply(this, a) } }, __toggle: f.fn.toggle, toggle: function (c) {
        if (!c || typeof c == "number" || f.fx.speeds[c] || !f.effects[c] || typeof c ==
"boolean" || f.isFunction(c)) return this.__toggle.apply(this, arguments); else { var a = k.apply(this, arguments); a[1].mode = "toggle"; return this.effect.apply(this, a) } 
    }, cssUnit: function (c) { var a = this.css(c), b = []; f.each(["em", "px", "%", "pt"], function (d, e) { if (a.indexOf(e) > 0) b = [parseFloat(a), e] }); return b } 
    }); f.easing.jswing = f.easing.swing; f.extend(f.easing, { def: "easeOutQuad", swing: function (c, a, b, d, e) { return f.easing[f.easing.def](c, a, b, d, e) }, easeInQuad: function (c, a, b, d, e) { return d * (a /= e) * a + b }, easeOutQuad: function (c,
a, b, d, e) { return -d * (a /= e) * (a - 2) + b }, easeInOutQuad: function (c, a, b, d, e) { if ((a /= e / 2) < 1) return d / 2 * a * a + b; return -d / 2 * (--a * (a - 2) - 1) + b }, easeInCubic: function (c, a, b, d, e) { return d * (a /= e) * a * a + b }, easeOutCubic: function (c, a, b, d, e) { return d * ((a = a / e - 1) * a * a + 1) + b }, easeInOutCubic: function (c, a, b, d, e) { if ((a /= e / 2) < 1) return d / 2 * a * a * a + b; return d / 2 * ((a -= 2) * a * a + 2) + b }, easeInQuart: function (c, a, b, d, e) { return d * (a /= e) * a * a * a + b }, easeOutQuart: function (c, a, b, d, e) { return -d * ((a = a / e - 1) * a * a * a - 1) + b }, easeInOutQuart: function (c, a, b, d, e) {
    if ((a /=
e / 2) < 1) return d / 2 * a * a * a * a + b; return -d / 2 * ((a -= 2) * a * a * a - 2) + b
}, easeInQuint: function (c, a, b, d, e) { return d * (a /= e) * a * a * a * a + b }, easeOutQuint: function (c, a, b, d, e) { return d * ((a = a / e - 1) * a * a * a * a + 1) + b }, easeInOutQuint: function (c, a, b, d, e) { if ((a /= e / 2) < 1) return d / 2 * a * a * a * a * a + b; return d / 2 * ((a -= 2) * a * a * a * a + 2) + b }, easeInSine: function (c, a, b, d, e) { return -d * Math.cos(a / e * (Math.PI / 2)) + d + b }, easeOutSine: function (c, a, b, d, e) { return d * Math.sin(a / e * (Math.PI / 2)) + b }, easeInOutSine: function (c, a, b, d, e) {
    return -d / 2 * (Math.cos(Math.PI * a / e) - 1) +
b
}, easeInExpo: function (c, a, b, d, e) { return a == 0 ? b : d * Math.pow(2, 10 * (a / e - 1)) + b }, easeOutExpo: function (c, a, b, d, e) { return a == e ? b + d : d * (-Math.pow(2, -10 * a / e) + 1) + b }, easeInOutExpo: function (c, a, b, d, e) { if (a == 0) return b; if (a == e) return b + d; if ((a /= e / 2) < 1) return d / 2 * Math.pow(2, 10 * (a - 1)) + b; return d / 2 * (-Math.pow(2, -10 * --a) + 2) + b }, easeInCirc: function (c, a, b, d, e) { return -d * (Math.sqrt(1 - (a /= e) * a) - 1) + b }, easeOutCirc: function (c, a, b, d, e) { return d * Math.sqrt(1 - (a = a / e - 1) * a) + b }, easeInOutCirc: function (c, a, b, d, e) {
    if ((a /= e / 2) < 1) return -d /
2 * (Math.sqrt(1 - a * a) - 1) + b; return d / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b
}, easeInElastic: function (c, a, b, d, e) { c = 1.70158; var g = 0, h = d; if (a == 0) return b; if ((a /= e) == 1) return b + d; g || (g = e * 0.3); if (h < Math.abs(d)) { h = d; c = g / 4 } else c = g / (2 * Math.PI) * Math.asin(d / h); return -(h * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g)) + b }, easeOutElastic: function (c, a, b, d, e) {
    c = 1.70158; var g = 0, h = d; if (a == 0) return b; if ((a /= e) == 1) return b + d; g || (g = e * 0.3); if (h < Math.abs(d)) { h = d; c = g / 4 } else c = g / (2 * Math.PI) * Math.asin(d / h); return h * Math.pow(2, -10 *
a) * Math.sin((a * e - c) * 2 * Math.PI / g) + d + b
}, easeInOutElastic: function (c, a, b, d, e) { c = 1.70158; var g = 0, h = d; if (a == 0) return b; if ((a /= e / 2) == 2) return b + d; g || (g = e * 0.3 * 1.5); if (h < Math.abs(d)) { h = d; c = g / 4 } else c = g / (2 * Math.PI) * Math.asin(d / h); if (a < 1) return -0.5 * h * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g) + b; return h * Math.pow(2, -10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g) * 0.5 + d + b }, easeInBack: function (c, a, b, d, e, g) { if (g == j) g = 1.70158; return d * (a /= e) * a * ((g + 1) * a - g) + b }, easeOutBack: function (c, a, b, d, e, g) {
    if (g == j) g = 1.70158;
    return d * ((a = a / e - 1) * a * ((g + 1) * a + g) + 1) + b
}, easeInOutBack: function (c, a, b, d, e, g) { if (g == j) g = 1.70158; if ((a /= e / 2) < 1) return d / 2 * a * a * (((g *= 1.525) + 1) * a - g) + b; return d / 2 * ((a -= 2) * a * (((g *= 1.525) + 1) * a + g) + 2) + b }, easeInBounce: function (c, a, b, d, e) { return d - f.easing.easeOutBounce(c, e - a, 0, d, e) + b }, easeOutBounce: function (c, a, b, d, e) { return (a /= e) < 1 / 2.75 ? d * 7.5625 * a * a + b : a < 2 / 2.75 ? d * (7.5625 * (a -= 1.5 / 2.75) * a + 0.75) + b : a < 2.5 / 2.75 ? d * (7.5625 * (a -= 2.25 / 2.75) * a + 0.9375) + b : d * (7.5625 * (a -= 2.625 / 2.75) * a + 0.984375) + b }, easeInOutBounce: function (c,
a, b, d, e) { if (a < e / 2) return f.easing.easeInBounce(c, a * 2, 0, d, e) * 0.5 + b; return f.easing.easeOutBounce(c, a * 2 - e, 0, d, e) * 0.5 + d * 0.5 + b } 
    })
} (jQuery);
;


/*
* 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", {
        // Default options
        options: {
            scrollingHotSpotLeft: "div.scrollingHotSpotLeft",
            scrollingHotSpotRight: "div.scrollingHotSpotRight",
            scrollableArea: "div.scrollableArea",
            scrollWrapper: "div.scrollWrapper",
            hiddenOnStart: false,
            ajaxContentURL: "",
            countOnlyClass: "",
            scrollStep: 10,
            scrollInterval: 10,
            mouseDownSpeedBooster: 3,
            autoScroll: "",
            autoScrollDirection: "right",
            autoScrollStep: 5,
            autoScrollInterval: 10,
            visibleHotSpots: "",
            hotSpotsVisibleTime: 5,
            startAtElementId: "",
            // Easing for when the scrollToElement method is used
			scrollToEasingDuration: 2500, // Milliseconds
			scrollToEasingFunction: "easeOutQuart" // String
        },
        _create: function () {

            // Set variables
            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 the user wants to have visible hotspots, here is where it's taken care of
            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;
                }
            }
            /*****************************************
            SET UP EVENTS FOR SCROLLING RIGHT
            *****************************************/
            // Check the mouse X position and calculate the relative X position inside the right hotspot
            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);
                }
            });

            // mouseover right hotspot - scrolling
            el.data("scrollingHotSpotRight").bind("mouseover", function () {

                // Clear autoscrolling, if it should only run on start
                if ((o.autoScroll === "onstart" && el.data("autoScrollInterval") !== null)) {
                    clearInterval(el.data("autoScrollInterval"));
                    el.data("autoScrollInterval", null);
                    self._trigger("autoScrollIntervalStopped");
                }

                // Start the scrolling interval
                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));

                // Callback
                self._trigger("mouseOverRightHotSpot");

            });

            // mouseout right hotspot
            el.data("scrollingHotSpotRight").bind("mouseout", function () {
                clearInterval(el.data("rightScrollInterval"));
                el.data("scrollXPos", 0);
            });

            // mousedown right hotspot (add scrolling speed booster)
            el.data("scrollingHotSpotRight").bind("mousedown", function () {
                el.data("speedBooster", o.mouseDownSpeedBooster);
            });

            // mouseup anywhere (stop boosting the scrolling speed)
            $("body").bind("mouseup", function () {
                el.data("speedBooster", 1);
            });

            /*****************************************
            SET UP EVENTS FOR SCROLLING LEFT
            *****************************************/
            // Check the mouse X position and calculate the relative X position inside the left hotspot
            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);
                }

            });

            // mouseover left hotspot
            el.data("scrollingHotSpotLeft").bind("mouseover", function () {

                // Clear autoscrolling, if it should only run on start

                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));

                // Callback
                self._trigger("mouseOverLeftHotSpot");
            });

            // mouseout left hotspot
            el.data("scrollingHotSpotLeft").bind("mouseout", function () {
                clearInterval(el.data("leftScrollInterval"));
                el.data("scrollXPos", 0);
            });

            // mousedown left hotspot (add scrolling speed booster)
            el.data("scrollingHotSpotLeft").bind("mousedown", function () {
                el.data("speedBooster", o.mouseDownSpeedBooster);
            });

            /*****************************************
            SET UP EVENT FOR RESIZING THE BROWSER WINDOW
            *****************************************/
            $(window).bind("resize", function () {
                // If the scrollable area is not hidden on start, show/hide the hotspots
                if (!(o.hiddenOnStart)) {
                    self._showHideHotSpots();
                }

                self._trigger("windowResized");
            });

            /*****************************************
            FETCHING AJAX CONTENT ON INITIALIZATION
            *****************************************/
            // If there's an ajaxContentURL in the options, 
            // fetch the content
            if (o.ajaxContentURL.length > 0) {
                self.replaceContent(o.ajaxContentURL);
            }
            else {
                self.recalculateScrollableArea();
            }

            // Should it be hidden on start?
            if (o.hiddenOnStart) {
                self.hide();
            }

            /*****************************************
            AUTOSCROLLING
            *****************************************/
            // If the user has set the option autoScroll, the scollable area will
            // start scrolling automatically. If the content is fetched using AJAX
            // the autoscroll is not started here but in recalculateScrollableArea.
            // Otherwise recalculateScrollableArea won't have the time to calculate
            // the width of the scrollable area before the autoscrolling starts.
            if ((o.autoScroll.length > 0) && !(o.hiddenOnStart) && (o.ajaxContentURL.length <= 0)) {
                self.startAutoScroll();
            }

        },
        /**********************************************************
        Hotspot functions
        **********************************************************/
        showHotSpotBackgrounds: function (fadeSpeed) {
            // Alter the CSS (SmoothDivScroll.css) if you want to customize
            // the look'n'feel of the visible hotspots
            var self = this, el = this.element;

            // Fade in the hotspot backgrounds
            if (fadeSpeed !== undefined) {
                // Before the fade-in starts, we need to make sure the opacity
                // is zero
                el.data("scrollingHotSpotLeft").css("opacity", "0.0");
                el.data("scrollingHotSpotRight").css("opacity", "0.0");

                el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");

                // Fade in the left hotspot
                el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed, 0.35);

                // Fade in the right hotspot
                el.data("scrollingHotSpotRight").fadeTo(fadeSpeed, 0.35);
            }
            // Don't fade, just show them
            else {
                // The left hotspot
                el.data("scrollingHotSpotLeft").addClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotLeft").removeAttr("style");

                // The right hotspot
                el.data("scrollingHotSpotRight").addClass("scrollingHotSpotRightVisible");
                el.data("scrollingHotSpotRight").removeAttr("style");
            }
            self._showHideHotSpots();
        },
        hideHotSpotBackgrounds: function (fadeSpeed) {
            var el = this.element;

            // Fade out the hotspot backgrounds
            if (fadeSpeed !== undefined) {
                // Fade out the left hotspot
                el.data("scrollingHotSpotLeft").fadeTo(fadeSpeed, 0.0, function () {
                    el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");
                });

                // Fade out the right hotspot
                el.data("scrollingHotSpotRight").fadeTo(fadeSpeed, 0.0, function () {
                    el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");
                });
            }
            // Don't fade, just hide them
            else {
                el.data("scrollingHotSpotLeft").removeClass("scrollingHotSpotLeftVisible");
                el.data("scrollingHotSpotLeft").removeAttr("style");

                el.data("scrollingHotSpotRight").removeClass("scrollingHotSpotRightVisible");
                el.data("scrollingHotSpotRight").removeAttr("style");
            }

        },
        // Function for showing and hiding hotspots depending on the
        // offset of the scrolling
        _showHideHotSpots: function () {
            var self = this, el = this.element, o = this.options;

            // If autoscrolling is set to always, there should be no hotspots
            if (o.autoScroll !== "always") {
                // If the scrollable area is shorter than the scroll wrapper, both hotspots
                // should be hidden
                if (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth())) {
                    el.data("scrollingHotSpotLeft").hide();
                    el.data("scrollingHotSpotRight").hide();
                }
                // When you can't scroll further left the left scroll hotspot should be hidden
                // and the right hotspot visible.
                else if (el.data("scrollWrapper").scrollLeft() === 0) {
                    el.data("scrollingHotSpotLeft").hide();
                    el.data("scrollingHotSpotRight").show();
                    // Callback
                    self._trigger("scrollLeftLimitReached");
                    // Clear interval
                    clearInterval(el.data("leftScrollInterval"));
                    el.data("leftScrollInterval", null);
                }
                // When you can't scroll further right
                // the right scroll hotspot should be hidden
                // and the left hotspot visible
                else if (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth() + el.data("scrollWrapper").scrollLeft())) {
                    el.data("scrollingHotSpotLeft").show();
                    el.data("scrollingHotSpotRight").hide();
                    // Callback
                    self._trigger("scrollRightLimitReached");
                    // Clear interval
                    clearInterval(el.data("rightScrollInterval"));
                    el.data("rightScrollInterval", null);
                }
                // If you are somewhere in the middle of your
                // scrolling, both hotspots should be visible
                else {
                    el.data("scrollingHotSpotLeft").show();
                    el.data("scrollingHotSpotRight").show();
                }
            }
            else {
                el.data("scrollingHotSpotLeft").hide();
                el.data("scrollingHotSpotRight").hide();
            }
        },

		// Function for calculating the scroll position of a certain element
		_setElementScrollPosition: function(method, element) {
			var self = this, el = this.element, o = this.options, tempScrollPosition = 0;

			switch (method) {
				case "first":
					el.data("scrollXPos", 0);
					return true;
				case "start":
					// Check to see if there is a specified start element in the options 
					// and that the element exists in the DOM
					if (o.startAtElementId !== "") {
						if (el.data("scrollableArea").has("#" + o.startAtElementId)) {
							tempScrollPosition = $("#" + o.startAtElementId).position().left;
							el.data("scrollXPos", tempScrollPosition);
							return true;
						}
					}
					return false;
				case "last":
					el.data("scrollXPos", (el.data("scrollableAreaWidth") - el.data("scrollWrapper").innerWidth()));
					return true;
				case "number":
					// Check to see that an element number is passed
					if (!(isNaN(element))) {
						tempScrollPosition = el.data("scrollableArea").children(o.countOnlyClass).eq(element - 1).position().left;
						el.data("scrollXPos", tempScrollPosition);
						return true;
					}
					return false;
				case "id":
					// Check that an element id is passed and that the element exists in the DOM
					if (element.length > 0) {
						if (el.data("scrollableArea").has("#" + element)) {
							tempScrollPosition = $("#" + element).position().left;
							el.data("scrollXPos", tempScrollPosition);
							return true;
						}
					}
					return false;
				default:
					return false;
			}


		},


        /**********************************************************
        Moving to a certain element
        **********************************************************/
        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":
                    // Check to see where the start-at element is at the moment.
                    // This can vary if endlessloop is used for autoscroll since it
                    // swaps elements around.

                    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))) {
                        // Get the total width of all preceding elements					
                        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();
        },

        /**********************************************************
        Scrolling to a certain element
        **********************************************************/
        scrollToElement: function (scrollTo, element) {
            var self = this, el = this.element, o = this.options, autoscrollingWasRunning = false;

            if (el.data("enabled")) {
                // Get the position of the element to scroll to
                if (self._setElementScrollPosition(scrollTo, element)) {
                    // Stop any ongoing autoscrolling
                    if (el.data("autoScrollingInterval") !== null) {
                        self.stopAutoScrolling();
                        autoscrollingWasRunning = true;
                    }

                    // Stop any other running animations
                    // (clear queue but don't jump to the end)
                    el.data("scrollWrapper").stop(true, false);

                    // Do the scolling animation
                    el.data("scrollWrapper").animate({
                        scrollLeft: el.data("scrollXPos")
                    }, { duration: o.scrollToEasingDuration, easing: o.scrollToEasingFunction, complete: function () {
                        // If autoscrolling was running before, start it again
                        if (autoscrollingWasRunning) {
                            self.startAutoScrolling();
                        }

                        self._showHideHotSpots();

                        // Trigger the right callback
                        switch (scrollTo) {
                            case "first":
                                self._trigger("scrolledToFirstElement");
                                break;
                            case "start":
                                self._trigger("scrolledToStartElement");
                                break;
                            case "last":
                                self._trigger("scrolledToLastElement");
                                break;
                            case "number":
                                self._trigger("scrolledToElementNumber", null, { "elementNumber": element });
                                break;
                            case "id":
                                self._trigger("scrolledToElementId", null, { "elementId": element });
                                break;
                            default:
                                break;
                        }
                    }
                    });
                }
            }

        },
        move: function (pixels) {
            var self = this, el = this.element, o = this.options;
            // clear queue, move to end
            el.data("scrollWrapper").stop(true, true);

            // Only run this code if it's possible to scroll left or right,
            if ((pixels < 0 && el.data("scrollWrapper").scrollLeft() > 0) || (pixels > 0 && el.data("scrollableAreaWidth") > (el.data("scrollWrapper").innerWidth() + el.data("scrollWrapper").scrollLeft()))) {
                if (o.easingAfterMouseWheelScrolling) {
                    el.data("scrollWrapper").animate({ scrollLeft: el.data("scrollWrapper").scrollLeft() + pixels }, { duration: o.easingAfterMouseWheelScrollingDuration, easing: o.easingAfterMouseWheelFunction, complete: function () { self._showHideHotSpots(); } });
                } else {
                    el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + pixels);
                    self._showHideHotSpots();

                }
            }


        },

       /**********************************************************
        Adding or replacing content
        **********************************************************/
        addContent: function (ajaxContentURL, addWhere) {
            var self = this, el = this.element;

            $.get(ajaxContentURL, function (data) {
                // Add the loaded content first or last in the scrollable area
                if (addWhere === "first") {
                    el.data("scrollableArea").children(":first").before(data);
                }
                else {
                    el.data("scrollableArea").children(":last").after(data);
                }

                // Recalculate the total width of the elements inside the scrollable area
                self.recalculateScrollableArea();

                // Determine which hotspots to show
                self._showHideHotSpots();
            });
        },
        replaceContent: function (ajaxContentURL) {
            var self = this, el = this.element;

            el.data("scrollableArea").load(ajaxContentURL, function () {
                // Recalculate the total width of the elements inside the scrollable area
                self.recalculateScrollableArea();
                self.moveToElement("first");
                self._showHideHotSpots();
                el.data("startingPosition", 0);
            });
        },
        /**********************************************************
        Recalculate the scrollable area
        **********************************************************/
        recalculateScrollableArea: function () {

            var tempScrollableAreaWidth = 0, foundStartAtElement = false, o = this.options, el = this.element, self = this;

            // Add up the total width of all the items inside the scrollable area
            // and check to see if there's a specific element to start at
            el.data("scrollableArea").children(o.countOnlyClass).each(function () {
                // Check to see if the current element in the loop is the one where the scrolling should start
                if ((o.startAtElementId.length > 0) && (($(this).attr("id")) === o.startAtElementId)) {
                    el.data("startingPosition", tempScrollableAreaWidth);
                    foundStartAtElement = true;
                }
                tempScrollableAreaWidth = tempScrollableAreaWidth + $(this).outerWidth(true);
            });


            // If the element with the ID specified by startAtElementId
            // is not found, reset it
            if (!(foundStartAtElement)) {
                el.data("startAtElementId", "");
            }

            // Set the width of the scrollable area
            el.data("scrollableAreaWidth", tempScrollableAreaWidth);
            el.data("scrollableArea").width(el.data("scrollableAreaWidth"));

            // Move to the starting position
            el.data("scrollWrapper").scrollLeft(el.data("startingPosition"));
            el.data("scrollXPos", el.data("startingPosition"));

            // If the content of the scrollable area is fetched using AJAX
            // during initialization, it needs to be done here. After it has
            // been loaded a flag variable is set to indicate that the content
            // has been loaded already and shouldn
            if (!(el.data("initialAjaxContentLoaded"))) {
                if ((o.autoScroll.length > 0) && !(o.hiddenOnStart) && (o.ajaxContentURL.length > 0)) {
                    self.startAutoScroll();
                    el.data("initialAjaxContentLoaded", true);
                }
            }

        },
		/**********************************************************
		Stopping, starting and doing the autoscrolling
		**********************************************************/
		stopAutoScrolling: function() {
			var self = this, el = this.element;

			if (el.data("autoScrollingInterval") !== null) {
				clearInterval(el.data("autoScrollingInterval"));
				el.data("autoScrollingInterval", null);

				// Check to see which hotspots should be active
				// in the position where the scroller has stopped
				self._showHideHotSpots();

				self._trigger("autoScrollingStopped");
			}
		},
		startAutoScrolling: function() {
			var self = this, el = this.element, o = this.options;

			if (el.data("enabled")) {
				self._showHideHotSpots();

				// Stop any running interval
				clearInterval(el.data("autoScrollingInterval"));
				el.data("autoScrollingInterval", null);

				// Callback
				self._trigger("autoScrollingStarted");

				// Start interval
				el.data("autoScrollingInterval", setInterval(function() {

					// If the scroller is not visible or
					// if the scrollable area is shorter than the scroll wrapper
					// any running autoscroll interval should stop.
					if (!(el.data("visible")) || (el.data("scrollableAreaWidth") <= (el.data("scrollWrapper").innerWidth()))) {
						// Stop any running interval
						clearInterval(el.data("autoScrollingInterval"));
						el.data("autoScrollingInterval", null);
					}
					else {
						// Store the old scrollLeft value to see if the scrolling has reached the end
						el.data("previousScrollLeft", el.data("scrollWrapper").scrollLeft());

						switch (o.autoScrollingDirection) {
							case "right":

								el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + o.autoScrollingStep);
								if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
									self._trigger("autoScrollingRightLimitReached");
									clearInterval(el.data("autoScrollingInterval"));
									el.data("autoScrollingInterval", null);
									self._trigger("autoScrollingIntervalStopped");
								}
								break;

							case "left":
								el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - o.autoScrollingStep);
								if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
									self._trigger("autoScrollingLeftLimitReached");
									clearInterval(el.data("autoScrollingInterval"));
									el.data("autoScrollingInterval", null);
									self._trigger("autoScrollingIntervalStopped");
								}
								break;

							case "backandforth":
								if (el.data("pingPongDirection") === "right") {
									el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + (o.autoScrollingStep));
								}
								else {
									el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - (o.autoScrollingStep));
								}

								// If the scrollLeft hasnt't changed it means that the scrolling has reached
								// the end and the direction should be switched
								if (el.data("previousScrollLeft") === el.data("scrollWrapper").scrollLeft()) {
									if (el.data("pingPongDirection") === "right") {
										el.data("pingPongDirection", "left");
										self._trigger("autoScrollingRightLimitReached");
									}
									else {
										el.data("pingPongDirection", "right");
										self._trigger("autoScrollingLeftLimitReached");
									}
								}
								break;

							case "endlessloopright":
								// Get the width of the first element. When it has scrolled out of view,
								// the element swapping should be executed. A true/false variable is used
								// as a flag variable so the swapAt value doesn't have to be recalculated
								// in each loop.
								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);
								}

								// Do the autoscrolling
								el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() + o.autoScrollingStep);
								// Check to see if the swap should be done
								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":
								// Get the width of the first element. When it has scrolled out of view,
								// the element swapping should be executed. A true/false variable is used
								// as a flag variable so the swapAt value doesn't have to be recalculated
								// in each loop.

								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);
								}

								// Do the autoscrolling
								el.data("scrollWrapper").scrollLeft(el.data("scrollWrapper").scrollLeft() - o.autoScrollingStep);

								// Check to see if the swap should be done
								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.autoScrollingInterval));
			}
		},
		restoreOriginalElements: function() {
			var self = this, el = this.element;

			// Restore the original content of the scrollable area
			el.data("scrollableArea").html(el.data("originalElements"));
			self.recalculateScrollableArea();
			self.jumpToElement("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;

			// Set enabled to true
			el.data("enabled", true);
		},
		disable: function() {
			var self = this, el = this.element;

			// Clear all running intervals
			self.stopAutoScrolling();
			clearInterval(el.data("rightScrollingInterval"));
			clearInterval(el.data("leftScrollingInterval"));
			clearInterval(el.data("hideHotSpotBackgroundsInterval"));

			// Set enabled to false
			el.data("enabled", false);
		},
		destroy: function() {
			var self = this, el = this.element;

			// Clear all running intervals
			self.stopAutoScrolling();
			clearInterval(el.data("rightScrollingInterval"));
			clearInterval(el.data("leftScrollingInterval"));
			clearInterval(el.data("hideHotSpotBackgroundsInterval"));

			// Remove all element specific events
			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");

			// Remove all elements created by the plugin
			el.data("scrollingHotSpotRight").remove();
			el.data("scrollingHotSpotLeft").remove();
			el.data("scrollableArea").remove();
			el.data("scrollWrapper").remove();

			// Restore the original content of the scrollable area
			el.html(el.data("originalElements"));

			// Call the base destroy function
			$.Widget.prototype.destroy.apply(this, arguments);

		}
	});
})(jQuery);
