/*

    AnimateSprite
    A plugin to set & sequence through pre-defined frames using a background-image sprite.
    
    Built by Paul Davis (http://pauladamdavis.com), but many thanks to
    Jonathan Andrew (http://epixelstudio.co.uk) for his help, guidence and ideas with this plugin.

*/
(function ($) {
    
    $.fn.animateSprite = function(options) {
	
		// Get defaults and pass into options obj
        var defaults = {
        		loop: true,
            	frames: '',
            	singleFrame: '',
            	reset: false,
            	removeStyle: false
        	},
        	options = $.extend(defaults, options);
        	
        // Set plugin vars
        var	element = $(this),
        	frames = options.frames,
        	numberOfFrames = frames.length,
        	loop = options.loop,
        	i = 0,
            frame = '',
            singleFrame = options.singleFrame,
            timeoutLoop = '',
            reset = options.reset,
            removeStyle = options.removeStyle;
            
        // Add 'animateSpriteHover class
        //element.addClass("animateSpriteHover");

        element.bind("mouseout", function(){
            //element.removeClass("animateSpriteHover");
        });

        if (singleFrame) {

            element.css({"backgroundPosition": singleFrame.xPos + "px " + singleFrame.yPos + "px"});
            i = (numberOfFrames + 1);
            clearTimeout(timeoutLoop);
            timeoutLoop = '';
            
        } else if (removeStyle == true) {
        
        	element.attr("style"," ");
        
        } else {
            
            function myLoop () {
                var timeoutLoop = setTimeout(function () {
                    if (element.hasClass("animateSpriteHover")) {
                        frame = frames[i];
                        element.css({"backgroundPosition": frame.xPos + "px " + frame.yPos + "px"});
                        if (loop == true) {
                            if (i == (numberOfFrames - 1)) {
                                i = 0;
                                myLoop();
                            } else {
                                i++;
                                if (i < numberOfFrames) myLoop();
                            }
                        } else {
                            i++; if (i < numberOfFrames) myLoop();
                        }
                    }
                }, frame.time);
            }

            myLoop();
        
        }
		
    };
    
})(jQuery);
