/*
 * jQuery focus blink plugin
 * http://namakemono.ps.land.to/
 *
 * Copyright (c) 2009 Hiroyuki Aoyagi
 * Dual licensed under the MIT and GPL licenses.
 *
 * @author 	Hiroyuki Aoyagi namakemono345@gmail.com
 * @version 1.0.0
 */
( function( $ ){
	$.fn.extend({
		focusBlinker: function( options ){
			//default
			var options = jQuery.extend({
				target:		':input',
				color:		'#eb6ea5',
				style:		'solid',
				width:		'1px',
				speed:		500,
				opacity:	0.7
			}, options );
			
			var self = $(this);
			
			var element = $(self).find(options.target);
			
			$(element).focus( function(){
				var index = $(element).index(this);
				var color = $(element).eq(index).css( 'border-color');
				var style = $(element).eq(index).css( 'border-style');
				var width = $(element).eq(index).css( 'border-width');
		
				jQuery.data( $(element).eq(index).get(0), 'focusBlinkerColor', color );
				jQuery.data( $(element).eq(index).get(0), 'focusBlinkerStyle', style );
				jQuery.data( $(element).eq(index).get(0), 'focusBlinkerWidth', width );
		
				$(element).eq(index).css( 'border-color', options.color );
				$(element).eq(index).css( 'border-style', options.style );
				$(element).eq(index).css( 'border-width', options.width );
		
				jQuery.data( $(element).eq(index).get(0), 'focusBlinker-run', true );
				//$(element).eq(index).fadeTo( options.speed, options.opacity ).fadeTo( options.speed, 1.0);
				blinker( $(element).eq(index) );
		
			});
	
			$(element).blur( function(){
				var index = $(element).index(this);
				var color = jQuery.data( $(element).eq(index).get(0), 'focusBlinkerColor' );
				var style = jQuery.data( $(element).eq(index).get(0), 'focusBlinkerStyle' );
				var width = jQuery.data( $(element).eq(index).get(0), 'focusBlinkerWidth' );
		
				$(element).eq(index).css( 'border-color', color );
				$(element).eq(index).css( 'border-style', style );
				$(element).eq(index).css( 'border-width', width );
		
				jQuery.data( $(element).eq(index).get(0), 'focusBlinker-run', false );
			});
	
			function blinker( self ){
				if( jQuery.data( $(self).get(0), 'focusBlinker-run') ){
					$(self).fadeTo( options.speed, options.opacity ).fadeTo( options.speed, 1.0);
					setTimeout( function(){ blinker( self ) }, options.speed * 2 );
				}
			}			
			
			return $(this);
		}
	});
})(jQuery);

