/* Scrollable */

(function(e) {

    function p(f, c) {
        var b = e(c);
        return b.length < 2 ? b : f.parent().find(c)
    }
    function u(f, c) {

        var b = this,
        n = f.add(b),
        g = f.children(),
        l = 0,
        j = c.vertical;
        k || (k = b);
        if (g.length > 1) g = e(c.items, f);
        e.extend(b, {
            getConf: function() {
                return c
            },
            getIndex: function() {
                return l
            },
            getSize: function() {
                return b.getItems().size()
            },
            getNaviButtons: function() {
                return o.add(q)
            },
            getRoot: function() {
                return f
            },
            getItemWrap: function() {
                return g
            },
            getItems: function() {
                return g.children(c.item).not("." + c.clonedClass)
            },
            move: function(a, d) {
                return b.seekTo(l + a, d)
            },
            next: function(a) {
                return b.move(1, a)
            },
            prev: function(a) {
                return b.move(-1, a)
            },
            begin: function(a) {
                return b.seekTo(0, a)
            },
            end: function(a) {
                return b.seekTo(b.getSize() - 1, a)
            },
            focus: function() {
                return k = b
            },
            addItem: function(a) {
                a = e(a);
                if (c.circular) {
                    g.children("." + c.clonedClass + ":last").before(a);
                    g.children("." + c.clonedClass + ":first").replaceWith(a.clone().addClass(c.clonedClass))
                } else g.append(a);
                n.trigger("onAddItem", [a]);
                return b
            },
            seekTo: function(a, d, h) {
                a.jquery || (a *= 1);
                if (c.circular && a === 0 && l == -1 && d !== 0) return b;

                /* Code done by Prashant Sachaniya */

                var stop_carosual_at = 0;
                try {
                    stop_carosual_at = document.getElementById("hidTotal_Carosul_Count").value;
                }
                catch (err) {
                    stop_carosual_at = 0;
                }

                /* Code done by Prashant Sachaniya end */

                if (!c.circular && a < 0 || a > (b.getSize() - stop_carosual_at) || a < -1) return b; 	// Changes done by mishal
                var i = a;
                if (a.jquery) a = b.getItems().index(a);
                else i = b.getItems().eq(a);
                var r = e.Event("onBeforeSeek");
                if (!h) {
                    n.trigger(r, [a, d]);
                    if (r.isDefaultPrevented() || !i.length) return b
                }
                i = j ? {
                    top: -i.position().top
} : {
    left: -i.position().left
};
                    l = a;
                    k = b;
                    if (d === undefined) d = c.speed;
                    g.animate(i, d, c.easing, h ||
                function() {
                    n.trigger("onSeek", [a])
                });
                    return b
                }
            });
            e.each(["onBeforeSeek", "onSeek", "onAddItem"],
        function(a, d) {
            e.isFunction(c[d]) && e(b).bind(d, c[d]);
            b[d] = function(h) {
                h && e(b).bind(d, h);
                return b
            }
        });
            if (c.circular) {
                var s = b.getItems().slice(-1).clone().prependTo(g),
            t = b.getItems().eq(1).clone().appendTo(g);
                s.add(t).addClass(c.clonedClass);
                b.onBeforeSeek(function(a, d, h) {
                    if (!a.isDefaultPrevented()) if (d == -1) {
                        b.seekTo(s, h,
                    function() {
                        b.end(0)
                    });
                        return a.preventDefault()
                    } else d == b.getSize() && b.seekTo(t, h,
                function() {
                    b.begin(0)
                })
                });
                b.seekTo(0, 0,
            function() { })
            }
            var o = p(f, c.prev).click(function() {
                b.prev()
            }),
        q = p(f, c.next).click(function() {
            b.next()
        });
            if (!c.circular && b.getSize() > 1) {
                b.onBeforeSeek(function(a, d) {
                    setTimeout(function() {
                        if (!a.isDefaultPrevented()) {
                            o.toggleClass(c.disabledClass, d <= 0);
                            q.toggleClass(c.disabledClass, d >= b.getSize() - 1)
                        }
                    },
                1)
                });
                c.initialIndex || o.addClass(c.disabledClass)
            }
            c.mousewheel && e.fn.mousewheel && f.mousewheel(function(a, d) {
                if (c.mousewheel) {
                    b.move(d < 0 ? 1 : -1, c.wheelSpeed || 50);
                    return false
                }
            });
            if (c.touch) {
                var m = {};
                g[0].ontouchstart = function(a) {
                    a = a.touches[0];
                    m.x = a.clientX;
                    m.y = a.clientY
                };
                g[0].ontouchmove = function(a) {
                    if (a.touches.length == 1 && !g.is(":animated")) {
                        var d = a.touches[0],
                    h = m.x - d.clientX;
                        d = m.y - d.clientY;
                        b[j && d > 0 || !j && h > 0 ? "next" : "prev"]();
                        a.preventDefault()
                    }
                }
            }
            c.keyboard && e(document).bind("keydown.scrollable",
        function(a) {
            if (!(!c.keyboard || a.altKey || a.ctrlKey || e(a.target).is(":input"))) if (!(c.keyboard != "static" && k != b)) {
                var d = a.keyCode;
                if (j && (d == 38 || d == 40)) {
                    b.move(d == 38 ? -1 : 1);
                    return a.preventDefault()
                }
                if (!j && (d == 37 || d == 39)) {
                    b.move(d == 37 ? -1 : 1);
                    return a.preventDefault()
                }
            }
        });
            c.initialIndex && b.seekTo(c.initialIndex, 0,
        function() { })
        }
        e.tools = e.tools || {
            version: "1.2.5"
        };
        e.tools.scrollable = {
            conf: {
                activeClass: "active",
                circular: false,
                clonedClass: "cloned",
                disabledClass: "disabled",
                easing: "swing",
                initialIndex: 0,
                item: null,
                items: ".items",
                keyboard: true,
                mousewheel: false,
                next: ".next",
                prev: ".prev",
                speed: 500,
                vertical: false,
                touch: true,
                wheelSpeed: 0
            }
        };
        var k;
        e.fn.scrollable = function(f) {
            var c = this.data("scrollable");
            if (c) return c;
            f = e.extend({},
        e.tools.scrollable.conf, f);
            this.each(function() {
                c = new u(e(this), f);
                e(this).data("scrollable", c)
            });
            return f.api ? c : this
        }
    })(jQuery);
    (function(b) {
        var f = b.tools.scrollable;
        f.autoscroll = {
            conf: {
                autoplay: true,
                interval: 3E3,
                autopause: true
            }
        };
        b.fn.autoscroll = function(c) {
            if (typeof c == "number") c = {
                interval: c
            };
            var d = b.extend({},
        f.autoscroll.conf, c),
        g;
            this.each(function() {
                var a = b(this).data("scrollable");
                if (a) g = a;
                var e, h = true;
                a.play = function() {
                    if (!e) {
                        h = false;
                        e = setInterval(function() {
                            a.next()
                        },
                    d.interval)
                    }
                };
                a.pause = function() {
                    e = clearInterval(e)
                };
                a.stop = function() {
                    a.pause();
                    h = true
                };
                d.autopause && a.getRoot().add(a.getNaviButtons()).hover(a.pause, a.play);
                d.autoplay && a.play()
            });
            return d.api ? g : this
        }
    })(jQuery);
    (function(d) {
        function p(b, g) {
            var h = d(g);
            return h.length < 2 ? h : b.parent().find(g)
        }
        var m = d.tools.scrollable;
        m.navigator = {
            conf: {
                navi: ".navi",
                naviItem: null,
                activeClass: "active",
                indexed: false,
                idPrefix: null,
                history: false
            }
        };
        d.fn.navigator = function(b) {
            if (typeof b == "string") b = {
                navi: b
            };
            b = d.extend({},
        m.navigator.conf, b);
            var g;
            this.each(function() {
                function h(a, c, i) {
                    e.seekTo(c);
                    if (j) {
                        if (location.hash) location.hash = a.attr("href").replace("#", "")
                    } else return i.preventDefault()
                }
                function f() {
                    return k.find(b.naviItem || "> *")
                }
                function n(a) {
                    var c = d("<" + (b.naviItem || "a") + "/>").click(function(i) {
                        h(d(this), a, i)
                    }).attr("href", "#" + a);
                    a === 0 && c.addClass(l);
                    b.indexed && c.text(a + 1);
                    b.idPrefix && c.attr("id", b.idPrefix + a);
                    return c.appendTo(k)
                }
                function o(a, c) {
                    a = f().eq(c.replace("#", ""));
                    a.length || (a = f().filter("[href=" + c + "]"));
                    a.click()
                }
                var e = d(this).data("scrollable"),
            k = b.navi.jquery ? b.navi : p(e.getRoot(), b.navi),
            q = e.getNaviButtons(),
            l = b.activeClass,
            j = b.history && d.fn.history;
                if (e) g = e;
                e.getNaviButtons = function() {
                    return q.add(k)
                };
                f().length ? f().each(function(a) {
                    d(this).click(function(c) {
                        h(d(this), a, c)
                    })
                }) : d.each(e.getItems(),
            function(a) {
                n(a)
            });
                e.onBeforeSeek(function(a, c) {
                    setTimeout(function() {
                        if (!a.isDefaultPrevented()) {
                            var i = f().eq(c); !a.isDefaultPrevented() && i.length && f().removeClass(l).eq(c).addClass(l)
                        }
                    },
                1)
                });
                e.onAddItem(function(a, c) {
                    c = n(e.getItems().index(c));
                    j && c.history(o)
                });
                j && f().history(o)
            });
            return b.api ? g : this
        }
    })(jQuery);

    $(function() {
        //$(".scrollable").scrollable();
        //document.getElementById("scrollable");
    });
  
