/*--------------------------------------------------------------
*	project: Vorwerk, 2010
*	created: 2011-09-30
*	last changed: 2011-09-30
*	author: Alexander Hartung, triplesense
--------------------------------------------------------------- */

(function( $ ) {
	$.fn.pulse = function( options ) {
		var settings = {
			delay: 300,
			ratio: 1.1,
			duration: 800,
			easing: 'swing'
		}

		return this.each( function(i,el) {

			if ( options ) {
				$.extend( settings, options );
			}
			var curel = $(el)
			
			if(!curel.data('pulseInitialized')) { // initialize element
				curel.data('pulseInitWidth', curel.width()); // store old width
				curel.data('pulseInitHeight', curel.height()); // store old height

				curel.data('pulseForbidden', false);
				curel.data('pulseInitialized', true);
			}
			curel.data('pulsePause', false);

			function onePulse(element) { // animate image one time
				var initHeight = element.data('pulseInitHeight');
				var initWidth = element.data('pulseInitWidth');
				
				element.animate({"width": initHeight*settings.ratio, "height": initWidth*settings.ratio}, settings.duration, settings.easing, function() { // first, bigger
					element.animate({"width": initWidth, "height": initHeight}, settings.duration, settings.easing, function() { // than small again
						if(element.data('pulsePause') == false) { // when not stopped
							onePulse(element)
						}
					}).delay(settings.delay);
				});
			}

			setTimeout( function() {
				if(!curel.data('pulseForbidden')){
					onePulse(curel)
				}
			}, i*settings.delay);
		});
	};
	$.fn.stopPulse = function( options ) {
		var settings = {
			immediatly: true
		}

		return this.each( function(i,el) {

			if ( options ) {
				$.extend( settings, options );
			}
			var curel = $(el)
			
			if(!curel.data('pulseInitialized')) { // initialize element
				return;
				curel.data('pulseInitWidth', curel.width()); // store old width
				curel.data('pulseInitHeight', curel.height()); // store old height

				curel.data('pulsePause', false);
				curel.data('pulseInitialized', true);
			}
			curel.data('pulsePause', true)
			
			if(settings.immediatly){
				var initHeight = curel.data('pulseInitHeight');
				var initWidth = curel.data('pulseInitWidth');
				curel.stop()
				curel.css({
					"width": initWidth, "height": initHeight
				})
			}
		});
	};
})( jQuery );
