jQuery.fn.galleryScroll = function (q) {
    var q = jQuery.extend({
        btPrev: 'a.link-prev',
        btNext: 'a.link-next',
        holderList: 'div',
        scrollElParent: 'ul',
        scrollEl: 'li',
        slideNum: false,
        duration: 1000,
        step: false,
        circleSlide: true,
        disableClass: 'disable',
        funcOnclick: null,
        autoSlide: false,
        innerMargin: 0
    }, q);
    return this.each(function () {
        var h = $(this);
        var i = jQuery(q.holderList, h).innerWidth();
        var j = jQuery(q.scrollEl, h).outerWidth(true);
        var k = jQuery(q.scrollEl, h).length * j;
        var l = 0;
        var f = 0;
        var m = 0;
        var n = null;
        if (!q.step) m = i;
        else m = q.step * j;
        if (!q.circleSlide) {
            if (q.innerMargin == l) jQuery(q.btPrev, h).addClass(q.disableClass)
        }
        if (q.slideNum && !q.step) {
            var o = 0;
            var p = 0;
            while (p < k) {
                p = p + i;
                if (p > k) {
                    o = p - k
                }
            }
        }
        if (q.autoSlide) {
            n = setTimeout(function () {
                jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
            }, q.autoSlide);
            jQuery(q.scrollElParent, h).hover(function () {
                clearTimeout(n)
            }, function () {
                n = setTimeout(function () {
                    jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                }, q.autoSlide)
            })
        }
		
		
   			window.setInterval(function () {
            jQuery(q.btPrev, h).removeClass(q.disableClass);
            if (k - i <= l + m - q.innerMargin) {
                if (f == 0) {
                    l = k - i + q.innerMargin;
                    f = 1;
                    if (!q.circleSlide) jQuery(this).addClass(q.disableClass)
                } else {
                    if (q.circleSlide) l = q.innerMargin;
                    f = 0
                }
            } else l = l + m;
            jQuery(q.scrollElParent, h).animate({
                marginLeft: -l + "px"
            }, {
                queue: false,
                duration: q.duration
            });
            if (n) {
                clearTimeout(n);
                n = setTimeout(function () {
                    jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                }, q.autoSlide)
            }
            if (q.slideNum && !q.step) jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
            if (jQuery.isFunction(q.funcOnclick)) {
                q.funcOnclick.apply(h)
            }
            return false
        }, 10000);		
		
		
		
        jQuery(q.btNext, h).click(function () {
            jQuery(q.btPrev, h).removeClass(q.disableClass);
            if (k - i <= l + m - q.innerMargin) {
                if (f == 0) {
                    l = k - i + q.innerMargin;
                    f = 1;
                    if (!q.circleSlide) jQuery(this).addClass(q.disableClass)
                } else {
                    if (q.circleSlide) l = q.innerMargin;
                    f = 0
                }
            } else l = l + m;
            jQuery(q.scrollElParent, h).animate({
                marginLeft: -l + "px"
            }, {
                queue: false,
                duration: q.duration
            });
            if (n) {
                clearTimeout(n);
                n = setTimeout(function () {
                    jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                }, q.autoSlide)
            }
            if (q.slideNum && !q.step) jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
            if (jQuery.isFunction(q.funcOnclick)) {
                q.funcOnclick.apply(h)
            }
            return false
        });
        jQuery(q.btPrev, h).click(function () {
            jQuery(q.btNext, h).removeClass(q.disableClass);
            if (l - m == -m - q.innerMargin) {
                if (!q.circleSlide) {
                    jQuery(this).addClass(q.disableClass);
                    l = q.innerMargin
                } else {
                    l = k - i;
                    f = 1
                }
            } else if (l - m < q.innerMargin && l - m > -m) l = q.innerMargin;
            else {
                l = l - m;
                f = 0
            };
            if (!q.circleSlide && l == -q.innerMargin) jQuery(this).addClass(q.disableClass);
            jQuery(q.scrollElParent, h).animate({
                marginLeft: -l + "px"
            }, {
                queue: false,
                duration: q.duration
            });
            if (q.slideNum && !q.step) jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
            if (n) {
                clearTimeout(n);
                n = setTimeout(function () {
                    jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                }, q.autoSlide)
            }
            if (jQuery.isFunction(q.funcOnclick)) {
                q.funcOnclick.apply(h)
            }
            return false
        });
        jQuery.fn.galleryScroll.autoSlide = function (a) {
            if (q.circleSlide) {
                if (k - i <= l + m - q.innerMargin) {
                    if (f == 0) {
                        l = k - i + q.innerMargin;
                        f = 1;
                        if (!q.circleSlide) jQuery(this).addClass(q.disableClass)
                    } else {
                        if (q.circleSlide) l = q.innerMargin;
                        f = 0
                    }
                } else l = l + m;
                jQuery(q.scrollElParent, h).animate({
                    marginLeft: -l + "px"
                }, {
                    queue: false,
                    duration: q.duration
                });
                n = setTimeout(function () {
                    jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                }, q.autoSlide)
            }
        };
        jQuery.fn.galleryScroll.numListCreate = function (a, b, c, d) {
            var e = '';
            var f = 1;
            var g = b + d;
            while (g > 0) {
                g = g - c;
                e += '<li><a href="">' + f + '</a></li>';
                f++
            }
            $(a).html('<ul>' + e + '</ul>')
        };
        jQuery.fn.galleryScroll.numListActive = function (a, b, c, d) {
            $('a', b).removeClass('active');
            var e = c - d - 1;
            var f = 0;
            if (a != 0) {
                while (a > e) {
                    e = (f * c) - d - 1;
                    f++
                }
            }
            var g = (e + d + 1) / c - 1;
            $('a', b).eq(g).addClass('active')
        };
        if (q.slideNum && !q.step) {
            jQuery.fn.galleryScroll.numListCreate(q.slideNum, k, i, o);
            jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
            numClick()
        };

        function numClick() {
            jQuery('a', q.slideNum).click(function () {
                jQuery(q.btPrev, h).removeClass(q.disableClass);
                jQuery(q.btNext, h).removeClass(q.disableClass);
                var a = jQuery('a', q.slideNum).index($(this));
                l = m * a;
                f = 0;
                if (l + m > k) {
                    l = l - (l - k) - m;
                    if (!q.circleSlide) jQuery(q.btNext, h).addClass(q.disableClass)
                }
                jQuery(q.scrollElParent, h).animate({
                    marginLeft: -l + "px"
                }, {
                    queue: false,
                    duration: q.duration
                });
                if (!q.circleSlide && l == 0) jQuery(q.btPrev, h).addClass(q.disableClass);
                jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
                if (n) {
                    clearTimeout(n);
                    n = setTimeout(function () {
                        jQuery.fn.galleryScroll.autoSlide(q.autoSlide)
                    }, q.autoSlide)
                }
                return false
            })
        };
        jQuery(window).resize(function () {
            i = jQuery(q.holderList, h).innerWidth();
            j = jQuery(q.scrollEl, h).outerWidth(true);
            k = jQuery(q.scrollEl, h).length * j;
            if (!q.step) m = i;
            else m = q.step * j;
            if (q.slideNum && !q.step) {
                o = 0;
                p = 0;
                while (p < k) {
                    p = p + i;
                    if (p > k) {
                        o = p - k
                    }
                };
                jQuery.fn.galleryScroll.numListCreate(q.slideNum, k, i, o);
                jQuery.fn.galleryScroll.numListActive(l, q.slideNum, i, o);
                numClick();
                jQuery(q.btPrev, h).removeClass(q.disableClass);
                jQuery(q.btNext, h).removeClass(q.disableClass);
                if (l == q.innerMargin) jQuery(this).addClass(q.disableClass);
                if (k - i < l - q.innerMargin) {
                    if (!q.circleSlide) jQuery(q.btNext, h).addClass(q.disableClass);
                    jQuery(q.scrollElParent, h).animate({
                        marginLeft: -(k - i) + "px"
                    }, {
                        queue: false,
                        duration: q.duration
                    })
                }
            }
        })
    })
}

