/**
 * jQuery hoverborder plugin
 * Copyright (c) 2011 INCRAVE Inc.
 * @author nsato
 * @version 0.1
 */
(function($){
	var namespace = 'hoverborder';
	$.fn[namespace] = function(options){
		var defaults = {
			size: 5,
			color: '#0000ff',
			opacity: 1.0,
			inSpeed: 300,
			outSpeed: 200,
			easing: 'linear'
		};
		var settings = $.extend(defaults, options);
		
		this.each(function(){
			var $top = $('<div>');
			var $right = $('<div>');
			var $left = $('<div>');
			var $bottom = $('<div>');
			var $box = $top.add($right).add($left).add($bottom);
			$box.hide().css({
				position: 'absolute',
				fontSize: 1,
				backgroundColor: settings.color
			});
			var $target = $(this).hover(
				function(){
					$top.css({
						left: $target.position().left,
						top: $target.position().top,
						width: $target.width() - settings.size,
						height: settings.size
					});
					$right.css({
						left: $target.position().left + $target.width() - settings.size,
						top: $target.position().top,
						width: settings.size,
						height: $target.height() - settings.size
					});
					$bottom.css({
						left: $target.position().left + settings.size,
						top: $target.position().top + $target.height() - settings.size,
						width: $target.width() - settings.size,
						height: settings.size
					});
					$left.css({
						left: $target.position().left,
						top: $target.position().top + settings.size,
						width: settings.size,
						height: $target.height() - settings.size
					});
					$box
						.stop(true, true)
						.fadeTo(settings.inSpeed, settings.opacity, settings.easing)
					;
				},
				function(){
					$box.fadeOut(settings.outSpeed);
				}
			).append($box);
		});
	};
})(jQuery);

