(function (A) {
    A.fn.customSroller = function (B) {
        var C = {
            hover: false,
            step: 1
        };
        return this.each(function () {
            if (B) {
                A.extend(C, B)
            }
            var N = this,
                j = 0,
                h = 0,
                L = 0,
                K = 0,
                V = 0,
                u = 0,
                I = C.step,
                Z = A(N).find(".scrollerItem"),
                Y = 0,
                H = 0,
                x = A(N).find(".scrollerItemContainer"),
                a, d = A(N).find(".scrollBar"),
                J = A(N).find(".scrollerTrackBar"),
                R = M(J.width()),
                X = A(N).find(".scrollerTrack"),
                S = M(X.width()),
                w = A(N).find(".scrollerItemMask"),
                c = M(w.width()),
                g = A(N).find(".scrollBarLeftArrow"),
                k = A(N).find(".scrollBarRightArrow"),
                v = A(N).find(".scrollerLeftArrow"),
                r = A(N).find(".scrollerRightArrow"),
                b = new Array(),
                s = false,
                n = A(N).find(".scrollerCatItem"),
                Q = A(N).find("img"),
                o = Q.length,
                G = 0,
                i = Math.floor(c / M(A(Z[0]).width()));
            g.click(function () {
                E(-I)
            });
            k.click(function () {
				var tbr = parseInt(R) - S;
				var tl = $(".scrollerTrack").css('left');
				if(0 < parseInt(tbr) - parseInt(tl))
				{
					E(I)
				}
            });
            v.click(function () {
                E(-I)
            });
            r.click(function () {
				//alert('ssss');
				var tbr = parseInt(R) - S;
				var tl = $(".scrollerTrack").css('left');
				//alert(R);
				//alert(R);
				// alert(tbr);
				// alert(tl);
				if(0 < parseInt(tbr) - parseInt(tl))
				{
					E(I)
				}
				
				//R = scrollerTrackBar.width()
				//S = scrollerItemContainer.width()

            });
            n.each(function () {
                A(this).click(function () {
                    s = true;
                    F(this)
                })
            });

            function f(y) {
                if (!y.complete) {
                    return false
                }
                if (typeof y.naturalWidth != "undefined" && y.naturalWidth == 0) {
                    return false
                }
                return true
            }
            function T() {
                G = 0;
                for (var y = 0;
                y < o;
                y++) {
                    if (f(Q[y])) {
                        G++
                    }
                }
                if (G != o) {
                    return false
                } else {
                    return true
                }
            }
            var q;

            function D() {
                var y = T();
                if (y) {
                    clearInterval(q);
                    a = x.height();
                    //w.css("height", a);
                } else {
                    setTimeout(function () {
                        w.css("height", x.height());
                    }, 10000)
                }
            }
            function O() {
                for (var y = 0;
                y < Z.length;
                y++) {
                    Y += Z[y].offsetWidth
                }
                x.width(Y);
                q = setInterval(function () {
                    D()
                }, 1000);
                Z.each(function () {
                    if (!A("div.cntViewSimilarProductsButton").length) {
                        if (C.hover) {
                            A(this).bind("mouseenter", function () {
                                A(this).addClass("itemHover");
                                A(this).children().eq(0).addClass("innerHover");
                                A(this).height(a - 10 + "px")
                            });
                            A(this).bind("mouseleave", function () {
                                A(this).removeClass("itemHover");
                                A(this).children().eq(0).removeClass("innerHover");
                                A(this).height(a + 10 + "px")
                            })
                        }
                        A(this).bind("click", function (AC) {
                            var AA = A(AC.target);
                            var z = A(AA);
                            var AD = z.parents(".scrollerItemClickableArea").attr("rel");
                            if (z.parents(".scrollerItemClickableArea").length) {
                                if (z.parents(".cntColourVariationSelector").length || z.parents(".cntCountryVariantContainer").length || z.hasClass("intel")) {
                                    return true
                                } else {
                                    if (z.parent(".scrollerItemClickableArea").attr("target") == "_blank" || z.attr("target") == "_blank") {
                                        var AB = window.open(AD, "_blank");
                                        AB.focus();
                                        return false
                                    } else {
                                        window.location = AD
                                    }
                                }
                            }
                        })
                    }
                });
                Z.height(a);
                A(N).find(".scrollerItemClickableArea").height(a);
                if (Z.length <= i) {
                    X.css("visibility", "hidden");
                    v.addClass("scrollerLeftArrowPassive");
                    r.addClass("scrollerRightArrowPassive");
                    g.addClass("scrollBarLeftArrowPassive");
                    k.addClass("scrollBarRightArrowPassive");
                    v.unbind("click");
                    r.unbind("click");
                    g.unbind("click");
                    k.unbind("click");
                    return false
                }
                J.click(function (AA) {
                    if (!s) {
                        AA = AA || window.event;
                        var z = A(this).offset();
                        var AB = AA.clientX - z.left;
                        V = AB - S / 2;
                        P(true);
                        t(true)
                    }
                    s = false
                });
                X.click(function () {
                    return false
                });
                X.mousedown(function (z) {
                    z = z || window.event;
                    j = z.clientX;
                    L = M(X.css("left"));
                    document.onmousemove = function (AA) {
                        AA = AA || window.event;
                        V = (L + (AA.clientX - j));
                        P(false);
                        t(false)
                    };
                    document.onselectstart = function () {
                        return false
                    };
                    l();
                    return false
                });
                document.onmouseup = function () {
                    document.onmousemove = (typeof GetCursor === "undefined") ? null : GetCursor
                };
                m();
                p()
            }
            function F(y) {
                var z = A(y).attr("rel");
                var AC = b[z][0];
                if (AC > (Z.length - i)) {
                    AC = Z.length - i
                }
                var AB = M(A(Z[0]).width());
                H = -(AB * AC);
                x.animate({
                    left: H
                }, 300);
                var AA = M(A(y).width());
                V = M(A(y).css("left")) - (S - AA) / 2;
                P(true);
                l();
                m()
            }
            function p() {
                var AC = 0;
                var AB = 0;
                for (var z = 0;
                z < Z.length;
                z++) {
                    AB = z;
                    if (A(Z[z]).attr("rel")) {
                        if (b.length == 0) {
                            AC = z;
                            b.push(new Array(z, A(Z[z])))
                        } else {
                            if (b[b.length - 1][1].attr("rel") != A(Z[z]).attr("rel")) {
                                AC = z;
                                b.push(new Array(z, A(Z[z])))
                            }
                        }
                        var y = U(b.length - 1);
                        var AA = (R / (Z.length)) * (AC + (AB - AC) / 2) + A(y).width() / 2;
                        AA = (AA + A(y).width()) > R ? (R - A(y).width()) : AA;
                        A(y).css("left", AA)
                    }
                }
            }
            function U(y) {
                var z = null;
                n.each(function () {
                    if (y == (A(this).attr("rel"))) {
                        z = this
                    }
                });
                return z
            }
            function P(y) {
                if (V < 0) {
                    V = 0
                }
                if (V > R - S) {
                    V = R - S;
					//////////mm1
                }
                if (y) {
                    X.animate({
                        left: V
                    }, 300)
                } else {
                    X.css("left", V)
                }
            }
            function t(y) {
                H = W();
                if (y) {
                    x.animate({
                        left: H
                    }, 300)
                } else {
                    x.css("left", H)
                }
                l();
                m()
            }
            function e() {
                var y = 0;
                var AB = (R - S);
                var AA = (Y - c);
                var z = Math.abs(M(H)) / AA * 100;
                y = AB * z / 100;
				//alert(y);
				
				var tbr = parseInt(R) - S;
				var tl = $(".scrollerTrack").css('left');
				
				if(y > tbr)
				{
					y = tbr;
				}
				//alert(y);
				//alert(tl);
				
                X.animate({ left: y}, 300);
            }
            function W() {
                var z = 0;
                var AA = (R - S);
                var y = V / AA * 100;
                var AB = (Y - c) * y / 100;
                return z = -AB
            }
            function E(y) {
                H = x.css("left");
                u += y;
                if (u < 0) {
                    u = 0
                }
                if (u > Z.length - i) {
                    u = (Z.length) - i
                }
                var z = M(A(Z[0]).width());
                H = -(z * u);
				
				var tbr = parseInt(R) - S;
				var tl = $(".scrollerTrack").css('left');
				// alert(y)
				// alert(tbr);
				
				// alert(tl);
				// alert(tbr);
				//alert(parseInt(tbr) - parseInt(tl));
				if(S >= parseInt(tbr) - parseInt(tl))
				{
					//y = tbr;
					//alert('gg');
					H = parseInt(H) + 67;
					//alert(H);
				}				
				//alert(H);
                x.animate({ left: H }, 300);
                e();
                m()
            }
            function m() {
                if (u == 0) {
                    v.addClass("scrollerLeftArrowPassive");
                    g.addClass("scrollBarLeftArrowPassive")
                } else {
                    v.removeClass("scrollerLeftArrowPassive");
                    g.removeClass("scrollBarLeftArrowPassive")
                }
                if (u == (Z.length - i)) {
                    r.addClass("scrollerRightArrowPassive");
                    k.addClass("scrollBarRightArrowPassive")
                } else {
                    r.removeClass("scrollerRightArrowPassive");
                    k.removeClass("scrollBarRightArrowPassive")
                }
            }
            function l() {
                var y = M(A(Z[0]).width());
				u = Math.round(Math.abs(H / y));
				//alert(u);
                return u;
            }
            function M(y) {
                var z = parseInt(y);
                return z == null || isNaN(z) ? 0 : z
            }
            O()
        })
    }
})(jQuery);
