(function($){
	var ELMS = [];
	$.fn.jdNewsScroll = function(settings) {
		settings = $.extend({}, arguments.callee.defaults, settings);
		$(this).css({"position":"relative","overflow":"hidden","width":settings.divWidth,"height":settings.divHeight,"display":""});
		$(this).find("ul").css({"position":"relative","list-style-type":"none","font-size":settings.fontSize,"margin":"0px"});
		$(this).find("li").css({"line-height":"130%","margin":"0px","padding":"2px 10px 1px 10px"});
		$(this).each(function(){
			this.$settings    = settings;
			this.$pause = false;
			this.$counter    = settings.beginTime;
			$(this).hover(function(){ $(this).jdNewsScrollPause(true) }, function(){ $(this).jdNewsScrollPause(false) });
			ELMS.push(this);
		});
		return this;
	};
	$.fn.jdNewsScroll.defaults = {
		beginTime: 10,
		fontSize: '9pt',
		divWidth: '165px',
		divHeight: '40px',
		lineHeight: '130%',
		delay:     20,
		step:    11
	};
	$.fn.jdNewsScrollPause = function(pause) {
		return this.each(function() {
			this.$pause = pause;
		});
	}
	$.fn.outerHeight=function(options) {
		if (!this[0]) 0;
		options = $.extend({ margin: false }, options || {});
		return this[0] == window || this[0] == document ?
		this.height() : this.is(':visible') ?
		this[0].offsetHeight + (options.margin ? (num(this, 'marginTop') + num(this, 'marginBottom')) : 0) :
		this.height()
		+ num(this,'borderTopWidth') + num(this, 'borderBottomWidth')
		+ num(this, 'paddingTop') + num(this, 'paddingBottom')
		+ (options.margin ? (num(this, 'marginTop') + num(this, 'marginBottom')) : 0);
	}

	setInterval(scroll, 80);
	function scroll() {
		for (var i = 0; i < ELMS.length; i++) {
			var elm = ELMS[i];
			if (elm && !elm.$pause) {
				if (elm.$counter == 0) {
					var ul     = $('> ul', elm)[0];
					if (!elm.$steps) {
						elm.$steps = $('> li:first-child', ul).outerHeight();
						elm.$step    = 0;
					}
					if ((elm.$steps + elm.$step) <= 0) {
						elm.$counter     = elm.$settings.delay;
						elm.$steps         = false;
						$(ul).css('top', '0').find('> li:last-child').after($('> li:first-child', ul));
						$('> *', ul).not('li').remove();
					} else {
						elm.$step -= elm.$settings.step;
						if (-elm.$step > elm.$steps) {
							elm.$step = -elm.$steps;
						}
						ul.style.top = elm.$step + 'px';
					}
				} else {
					elm.$counter--;
				}
			}
		}
	};
})(jQuery);