﻿(function() {  


/*	削除ボタンでエラーを振り分ける
------------------------------------------------------------------------------- */
	jQuery.fn.glossaryTooltips = function(config){
		config = jQuery.extend({
			highlightEle	:	'span.jq-highlight',
			linkText			:	'より詳しい説明はこちらから',
			linkClick01			:	'onClick="javascript:pageTracker._trackPageview(',
			linkClick02			:	"'用語集へのクリックカウント（噴出）');",	
			linkClick03			:	"var s=s_gi(SMAM_LOG_ACCOUNT);s.linkTrackVars='eVar14,events,eVar2,eVar3';s.linkTrackEvents='event1';s.eVar14=",
			linkClick04			:	"'用語集へのクリックカウント（噴出）';",
			linkClick05			:	"s.events='event1';s.tl(this,'d',",
			linkClick06			:	"'用語集へのクリックカウント（噴出）'",			
			linkClick07			:	');s.pageName=',
			linkClick08			:	"'用語集へのクリックカウント（噴出）'",
			linkClick09			:	";s.eVar14='';s.events='';s.eVar2='';s.eVar3='';var s_code=s.t();if(s_code)document.write(s_code);",
			linkClick10			:	'"',
			tipBoxId			:	'jq-tooltip',
			closeBtn			:	'http://www.smam-jp.com/common/images/com_ic11.gif'
		},config);

		var target = $(this);
		var num = GLOSSARY.terminology.length;
		
		target.each(function(){
		for(var i=0; i<num; i++ ){
			$.highlight(this,GLOSSARY.terminology[i].term);
		}
		target.find(config.highlightEle).addClass('search-true');
		$(config.highlightEle).not('.search-true').addClass('search-false').end().removeClass('search-true');
		
	/* a要素と見出し要素内のハイライトを削除 */
		$('a '+config.highlightEle+',:header '+config.highlightEle).each(function(){
			removeTag($(this));
		});
		
	/* ハイライトの入れ子を削除 */
		$(config.highlightEle+' '+config.highlightEle).each(function(){
			removeTag($(this));
		});
	/* 検索対象以外のハイライトを削除（IEのみ） */
		if(jQuery.browser['msie']){
			$('span.search-false').each(function(){
				removeTag($(this));
			});
			
		}		
			function removeTag(_target){
				var tmp = _target.text();
				_target.replaceWith(tmp);					//	←Safari2.0.4がクラッシュする場所
				//$(this).after(tmp).remove();
			}
	
		$(config.highlightEle).hover(function(){
			$(this).addClass('tip-hover');		
		},function(){
	//		$('#j-tooltip').remove();
			$(this).removeClass('tip-hover');
		}).click(function(event){
			displayToolTip(event,$(this));
		});
		
	});
		

/* ツールチップ表示関数
---------------------------------------------------- */
		function displayToolTip(event,ele){
				var word = ele.text();
				var wordNo;
				var tip;
				var tipWidth = 345;
/*				var boxPos = {
					top	 : event.y,
					left :	event.clientX
				};*/
				
				var boxPos = {
					top	 :	ele.offset().top - 32,
					left :	ele.offset().left + ele.width()
				};
				var winWidth;
				function getBrowserWidth () {  
					if ( window.innerWidth ) {
						return window.innerWidth;
					
					}else if( document.documentElement && document.documentElement.clientWidth != 0 ){
						return document.documentElement.clientWidth; 
					
					}else if( document.body ) {
						return document.body.clientWidth;
					
					}
					return 0;  
				}
				
				winWidth = getBrowserWidth();
				$('#'+ config.tipBoxId).remove();


/*
			<div id="jq-tooltip"><p id="jq-close-btn"><img height="12" width="12" alt="閉じる" src="images/close_icon.gif"></p><dl class="iepngfix">
					<dt><span>用語:</span>基準価格</dt>
					<dt><span>読み:</span>きじゅんかかく</dt>
					<dt><span>英語:</span>Net Asset Value</dt>
					<dd>基準価額とは、ファンドの財産的価値を示すもので、ファンドの時価に相当するものです。</dd>
					<dd  class="text-link"><a href="dummy" target="_blank"><span>より詳しい説明はこちら</span></a></dd>
				</dl>
				<div id="jq-arrow-left"></div>
				<div id="jq-arrow-right"></div>
				<div id="tip-bottom" class="iepngfix">
			</div>
*/
        var linkClick = config.linkClick01+config.linkClick02+config.linkClick03+config.linkClick04+config.linkClick05+config.linkClick06+config.linkClick07+config.linkClick08+config.linkClick09+config.linkClick10;
				for(var i=0; i<num; i++){
					if(GLOSSARY.terminology[i].term == word){
						wordNo = i;					
						tip = '<div id="'+ config.tipBoxId +'">';
						tip += '<p id="jq-close-btn"><img height="16" width="16" alt="閉じる" src="'+ config.closeBtn+'"></p>';
						tip += '<dl class="iepngfix">';
						tip += '<dt><span>用語:</span>' +word+ '</dt>';
						if(GLOSSARY.terminology[wordNo].termKana != '') tip += '<dt><span>読み:</span>'+ GLOSSARY.terminology[wordNo].termKana + '</dt>';
						if(GLOSSARY.terminology[wordNo].english != '') tip += '<dt><span>英語:</span>'+ GLOSSARY.terminology[wordNo].english + '</dt>';
						tip += '<dd>'+ GLOSSARY.terminology[wordNo].exposition + '</dd>';
						if(GLOSSARY.terminology[wordNo].url != '') tip += '<dd class="text-link"><a href="' +GLOSSARY.terminology[wordNo].url+ '" target="_blank" '+linkClick+'><span>' +config.linkText+ '</span></a></dd>';
						tip += '</dl>';
						if(ele.width() < 400){
							if(winWidth-boxPos.left < tipWidth ){
								boxPos.left = ele.offset().left - tipWidth;
								tip += '<div id="jq-arrow-right" class="iepngfix"></div>';
							}else{
								tip += '<div id="jq-arrow-left" class="iepngfix"></div>';
							}
						}else {
							var winWidth;
							if(jQuery.browser['msie']){
								winWidth = document.documentElement.clientWidth;
							}else {
								winWidth = window.innerWidth
							}
							
							if(event.clientX < winWidth/2){
								tip += '<div id="jq-arrow-left" class="iepngfix"></div>';
								boxPos.left = event.clientX;
								boxPos.top = boxPos.top + 18;
							}else {
								tip += '<div id="jq-arrow-right" class="iepngfix"></div>';
								boxPos.left = event.clientX - tipWidth;
							}						
							
						}
						tip += '<div id="tip-bottom" class="iepngfix"></div>';
						tip += '</div>';
						
						break;
					}
				}
				
				$('body').bind('click', hideModalBox);
				$(window).bind('scroll', glossaryDelete);

				
				$('body').prepend(tip);
			
				$('#'+ config.tipBoxId).css({
					'width'	:		tipWidth 		+'px',
					'top'		:		boxPos.top  +'px',
					'left'	:		boxPos.left +'px'
				});
		}

		function glossaryDelete(){
			$('#'+ config.tipBoxId).remove();
			$('body').unbind('click', hideModalBox);
			$(window).unbind('scroll', glossaryDelete);
		}
		
		function hideModalBox(e){
			var clickClass = $(e.target).attr('class');
			var glossaryClass = 'jq-highlight tip-hover';
			$(window).resize(glossaryDelete);
			if(clickClass == glossaryClass){	
				return false;
			}
			if($(e.target).parents('#'+config.tipBoxId).length == 0||$(e.target).parent('#jq-close-btn').length != 0){	
				glossaryDelete();	
			}
			
		}

	};
	
})(jQuery);


// init

$(function(){
	$('.jq-search-target').glossaryTooltips();
	
});