/**
 * @author: Wonil Suh wonil.suh@atmospherebbdo.com, wonil@wonilSuh.com
 * data: June 22, 2011
 * rev: 1.0
 */
(function($) {
	$.fn.animateSprite = function(params) {
		var _this = this;
		var _params = params;
		if(_params.isPlaying == true) {
			
			return $(_this).data('__animateSprite_isPlaying') == true;
			
		} else if(_params.stopIt == true) {
			
			if($(_this).data('__animateSprite_playData')) {
				var playData = $(_this).data('__animateSprite_playData');
				clearInterval(playData.intervalId);
				$(_this).removeData('__animateSprite_isPlaying');
				if(_params.clearData == true) {
					$(_this).css({
						'background-image':''
					});
					$(_this).removeData('__animateSprite_bg_pos_x');
					$(_this).removeData('__animateSprite_playData');
				}
			}
			
		} else {
			
			if($(_this).data('__animateSprite_playData') && $(_this).data('__animateSprite_playData').intervalId) clearInterval($(_this).data('__animateSprite_playData').intervalId);
			
			$(_this).data('__animateSprite_isPlaying', true);
			
			if(_params.resume == true && $(_this).data('__animateSprite_bg_pos_x')) {
				//
			} else {
				$(_this).data('__animateSprite_bg_pos_x', 0);
			}
			
			$(_this).css({
				'background-image':'url("'+_params.bgImgPath+'")',
				'background-position':-$(_this).width() * $(_this).data("__animateSprite_bg_pos_x")+'px 0'
			});
			
			var playData = {};
			playData.playbackCount = 0;
			playData.numOfPlaybacks = -1;
			if(_params.numOfPlaybacks > 0) playData.numOfPlaybacks = _params.numOfPlaybacks;
			playData.intervalId = setInterval(function() {
				var dir = 1;
				if(_params.direction) {
					dir = _params.direction;
				}
				
				var newPos = $(_this).data('__animateSprite_bg_pos_x')+dir;
				
				if(_params.numOfImg) {
					
					if($(_this).data('__animateSprite_playData').numOfPlaybacks > 0) {
						if((dir > 0 && newPos >= _params.numOfImg)) {
							$(_this).data('__animateSprite_playData').playbackCount++;
						} else if((dir < 0 && newPos < 0)) {
							$(_this).data('__animateSprite_playData').playbackCount++;
						}
						if($(_this).data('__animateSprite_playData').playbackCount >= $(_this).data('__animateSprite_playData').numOfPlaybacks) {
							$(_this).data('__animateSprite_playData').playbackCount = 0;
							$(_this).animateSprite({
								stopIt:true
							});
							if(_params.callback) _params.callback(_this);
							return;
						}
					}
					
					if((dir > 0 && newPos >= _params.numOfImg)) {
						newPos = 0;
					} else if((dir < 0 && newPos < 0)) {
						newPos = _params.numOfImg-1;
					}
				} 
				$(_this).data('__animateSprite_bg_pos_x', newPos);
				$(_this).css({
					'background-image':'url("'+_params.bgImgPath+'")',
					'background-position':-$(_this).width() * $(_this).data("__animateSprite_bg_pos_x")+'px 0'
				});
				
			}, _params.interval);
			$(_this).data('__animateSprite_playData', playData);
			
		}
	}
})(jQuery);
