(function ($) {
    $.fn.paginate = function (options) {
        var opts = $.extend({}, $.fn.paginate.defaults, options);
        return this.each(function () {
            $this = $(this);
            var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
            var selectedpage = o.start;
            $.fn.draw(o, $this, selectedpage);
        });
    };

    var outsidewidth_tmp = 0;
    var insidewidth = 0;
    var bName = navigator.appName;
    var bVer = navigator.appVersion;
    if (bVer.indexOf('MSIE 7.0') > 0)
        var ver = "ie7";
    $.fn.paginate.defaults = {
        count: 5,
        start: 12,
        automate: false,
        onChange: function () { return false; }
    };

    $.fn.draw = function (o, obj, selectedpage) {
        if (o.display > o.count)
            o.display = o.count;


        $this.empty();
        var _pageArea = $(document.createElement('div')).addClass("pagingArea");
        var _pagelist = $(document.createElement('div')).addClass("pagingArrayContain");
        var _leftArrow = $(document.createElement('div')).addClass("primaryLeftArrow").css({ 'opacity': '0.3', 'cursor': 'auto'});
        _pagelist.append(_leftArrow);
        var _currPage = $(document.createElement('div')).addClass("primaryNumber").html(selectedpage);
        _pagelist.append(_currPage);


        var _primaryDot = $(document.createElement('div')).addClass("pages primaryDot").attr('id', '1');
        _pagelist.append(_primaryDot);
        for (var i = 1; i < o.count; i++) {
            var val = i + 1;
            var _primaryColdDot = $(document.createElement('div')).addClass("pages primaryColdDot").attr('id', val);
            _pagelist.append(_primaryColdDot);
        }

        var _lastPage = $(document.createElement('div')).addClass("primaryNumber").html(o.count);
        _pagelist.append(_lastPage);
        var _rightArrow = $(document.createElement('div')).addClass("primaryRightArrow").css({ 'opacity': '1', 'cursor': 'pointer' });
        _pagelist.append(_rightArrow);
        _pageArea.append(_pagelist)

        $this.append(_pageArea);

        _leftArrow.mousedown(function () {
            var currPage = $('.primaryNumber:first', obj).html();
            if (currPage == o.start) {
                return;
            }

            currPage = parseInt(currPage) - 1;

            if (currPage == o.start) {
                _leftArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _leftArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }

            if (currPage == o.count) {
                _rightArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _rightArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }

            if (currPage <= o.count) {
                $('.primaryDot', obj).removeClass('primaryDot').addClass('primaryColdDot');
                $('.primaryHotDot:last', obj).removeClass('primaryHotDot').addClass('primaryDot');
                //$('a.pageunselected:first', obj).removeClass("pageunselected").addClass("pageselected");
            }
            $('.primaryNumber:first', obj).html(currPage.toString());
            o.onChange(currPage);
        });

        _rightArrow.mousedown(function () {
            var currPage = $('.primaryNumber:first', obj).html();
            $('.primaryNumber:first', obj).html();
            if (currPage == o.count) {
                return;
            }

            currPage = parseInt(currPage) + 1;

            if (currPage == o.start) {
                _leftArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _leftArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }

            if (currPage == o.count) {
                _rightArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _rightArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }

            if (currPage <= o.count) {
                $('.primaryDot', obj).removeClass('primaryDot').addClass('primaryHotDot');
                $('.primaryColdDot:first', obj).removeClass('primaryColdDot').addClass('primaryDot');
            }
            $('.primaryNumber:first', obj).html(currPage.toString());

            o.onChange(currPage);
        });

        _pagelist.find('.pages').click(function (e) {
            var selPage = $(this, obj).attr('id');
            var currPage = $('.primaryNumber:first', obj).html();
            if (selPage == currPage) {
                return;
            }

            if (selPage < currPage) {
                $('#' + currPage, obj).removeClass("primaryDot").addClass("primaryColdDot");
                $('#' + selPage, obj).removeClass("primaryHotDot").addClass("primaryDot");
                for (var i = parseInt(currPage) - 1; i > selPage; i--) {
                    $('#' + i, obj).removeClass("primaryHotDot").addClass("primaryColdDot");
                }
            }
            else if (selPage > currPage) {
                $('#' + currPage, obj).removeClass("primaryDot").addClass("primaryHotDot");
                $('#' + selPage, obj).removeClass("primaryColdDot").addClass("primaryDot");
                for (var i = parseInt(currPage) + 1; i < selPage; i++) {
                    $('#' + i, obj).removeClass("primaryColdDot").addClass("primaryHotDot");
                }
            }

            currPage = selPage;
            if (currPage == o.start) {
                _leftArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _leftArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }

            if (currPage == o.count) {
                _rightArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
            }
            else {
                _rightArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
            }
            $('.primaryNumber:first', obj).html(currPage.toString());
            o.onChange(currPage);
        });

        setTimeout(function () {
            timerMethod(o, obj);
        }, 10000);

        function timerMethod(o, obj) {

            var currPage = $('.primaryNumber:first', obj).html();
            if (o.automate) {
                if (currPage < o.count) {
                    currPage = parseInt(currPage) + 1;
                }
                else {
                    currPage = o.start;
                    _pagelist.find('.primaryDot').removeClass("primaryDot").addClass("primaryColdDot");
                    _pagelist.find('.primaryHotDot').each(function () {
                        $(this, obj).removeClass("primaryHotDot").addClass("primaryColdDot");
                    })
                    $(".primaryColdDot:first", obj).removeClass("primaryColdDot").addClass("primaryDot");

                }

                if (currPage <= o.count && currPage != o.start) {
                    $('.primaryDot', obj).removeClass("primaryDot").addClass("primaryHotDot");
                    $('.primaryColdDot:first', obj).removeClass("primaryColdDot").addClass("primaryDot");
                }

                if (currPage == o.start) {
                    _leftArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
                }
                else {
                    _leftArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
                }

                if (currPage == o.count) {
                    _rightArrow.css({ 'opacity': '0.3', 'cursor': 'auto' });
                }
                else {
                    _rightArrow.css({ 'opacity': '1', 'cursor': 'pointer' });
                }
                $('.primaryNumber:first', obj).html(currPage.toString());
                o.onChange(currPage);

                setTimeout(function () {
                    timerMethod(o, obj);
                }, 10000);
            }

        };

    }

})(jQuery);


