/* tooltip.js
	*
	* +jQuery 1.4.1
	*
	* 2010 yuki.imayoshi
	*
	*
	* ==Mark Up==
	*
	* <div id="{containerID}">
	*		<div id="{wapperID}">
	*			<div id="{mainID}">
	*			</div>
	*		</div>
	*	</div>
	*
	*/
	
if(typeof jQuery != 'undefined') {
	jQuery(function($) {
		$.fn.extend({
			'tooltip' : function(options) {
				var settings = $.extend({
					                     boxLimg : 'tooltip_bl.png',
					                     boxRimg : 'tooltip_br.png'
					                     }, $.fn.tooltip.defaults, options);
				
				/******************************************************
				 * createTiptool Element
				 ******************************************************/
				var createTiptool = function() {
					var obj = '<div id="'+settings.containerID+'"><div id="'+settings.wapperID+'"><div id="'+settings.mainID+'"></div></div></div>';
						
					$(settings.containment).append(obj);
					$('#'+settings.containerID).css({
						                             position  : 'absolute',
						                             display   : 'none',
						                             'z-index' : 999
						                             });
				}
					
				// initialaze
				if($('#'+settings.containerID).length === 0) {
					 createTiptool();
				}
				
				return this.each(function() {
					if($.fn.jquery < '1.3.2') {return;}
					var $t = $(this);
					var o= $.metadata ? $.extend({}, settings, $t.metadata()) : settings;
					var $a = $(o.containment);
					var $tip = $('#'+o.containerID);
					var $tipWapper = $('#'+o.wapperID);
					
					/******************************************************
					 * initialaze
					 ******************************************************/
					var init = function() {
						btanSetting();
					}
					
					/******************************************************
					 * btanSetting
					 ******************************************************/
					var btanSetting = function() {
						/***************************************
						 * MouseOver Action
						 ***************************************/
						$t.mouseover(function(d) {
							var pos  = $t.position();
							var w    = $tip.width();
							var maxW = $a.width();
							
							var txt = $t.attr('title');
							$t.attr('title','');
							$('#'+o.mainID,$tip).html(txt);
							
							var posX = Math.floor(pos.left) - 12;
							var bg = o.boxLimg;
							if(Math.floor(pos.left) + w > maxW) {
								posX = Math.floor(pos.left) + $t.width() - w + 12;
								bg = o.boxRimg
							}
							
							$tipWapper.css({
								               'background-image' : 'url('+o.path + bg+')'
							               });
							$tip.css({
								      display : 'block',
								      top     : Math.floor(pos.top) - $tip.height() - 5,
								      left    : posX
								      })
							d.preventDefault();
							d.stopPropagation();
						});
					
						/***************************************
						 * MouseOut Action
						 ***************************************/
						 $t.mouseout(function(d) {
							$t.attr('title',$('#'+o.mainID).html());
							$tip.css({
								         display : 'none'
								        });
							d.preventDefault();
							d.stopPropagation();
						});
					
						/***************************************
						 * Click Action
						 ***************************************/
						$t.click(function() {
							return false;
						});
					}
					
					init();
					
				});
			}
		});
		$.fn.tooltip.defaults = {
			path        : '/assets/images/bg/',
			containerID : 'tooltip',
			wapperID    : 'tooltipWapper',
			mainID      : 'tooltipMain',
			containment : 'html',
			speed       : 200
		};
	});
}
