/*
 * mopTip 1.1
 * By Hiroki Miura (http://www.mopstudio.jp)
 * Copyright (c) 2008 mopStudio
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * September 27, 2008
*/

var mopTipCount=0;
var openMopTip=false;
var mopTipWindW,mopTipWindH,mopTipStyle;
var mopTipOpened;
var mopTipW;
var	mopTipH;
var mopTipTitle;
var mopTipAlt;
var mopTipType;
var mopTipCurrent;
var mopTipFunc,mopTipPin,mopTipContent;
var mopTipCloseBtn=new Image();
/*path to image*/
mopTipCloseBtn.src="/images/base/tips/closeBtn_h.png"

jQuery.fn.extend({
	mopTip:function(setting){
		var px="px"
		if($(this).attr("href")){
			$(this).attr({href:"#?viewtips"});
		}
		$(this).mouseover(function(evt){
			mopTipCurrent	= this;
			/* overOut, overClick */
			mopTipStyle=setting.style;
			mopTipPin=false;
			/* name, title, rel, next, child　*/
			mopTipType=setting.get;
			if(setting.get=="name"){
				mopTipContent=$(this).attr("name");
			}else if(setting.get=="alt"){
				mopTipContent=$(this).attr("alt");
			}else if(setting.get=="title"){
				mopTipContent=$(this).attr("title");
			}else if(setting.get=="rel"){
				mopTipContent=$(this).attr("rel");
			}else if(setting.get=="next"){
				mopTipContent=$(this).next().html();
			}else if(setting.get=="child"){
				mopTipContent=$(this).children().html();
			}else{
				mopTipContent=$(setting.get).html();
			};
			
			if( (mopTipType == "alt") || (mopTipType == "title") ){
				mopTipTitle				= $(this).attr("title");
				mopTipAlt				= $(this).attr("alt");
				$(this)
					.attr("title","")
					.attr("alt","");
			};
			
			/*setting*/
			
			if( (setting.w == "auto") || (setting.h == "auto") ){
				$("body").append('<span id="tempTip" style="display:none;">'+mopTipContent+'</span>');
				if(setting.w == "auto"){
					mopTipW	= $("#tempTip").width()+15;
				} else {
					mopTipW=setting.w;
				}
				if(setting.h == "auto"){
					mopTipH	= $("#tempTip").height()+10;
				} else {
					mopTipH=setting.h;
				}
				$("#tempTip").remove();
			} else {
				mopTipW=setting.w;
				mopTipH=setting.h;
			}
			
			/*fasttime*/
			if(mopTipCount==0){
				mopTipFunc.tipInit();
			}
			/*setting mopTip*/
			$("#viewTips .tip").css({left:"20px",top:"20px",width:mopTipW+px,height:mopTipH+px});
			$("#viewTips .left,#viewTips .right").css({height:mopTipH+px});
			$("#viewTips .close").hide();
			if((mopTipStyle=="overClick")||(mopTipStyle=="clickClick")){
				$("#viewTips .close").show();
			}
			/*position fix*/
			mopTipFunc.findPosi(evt);
			/*mopTipOpen*/
			openMopTip=true;
			setTimeout("mopTipFunc.tipOpen()",300);
		});
		/*click*/
		$(this).click(function(){
			if(openMopTip==true){
				mopTipPin=true;
			}
		});
		/*mousemove*/
		$(this).mousemove(function(evt){
			if(mopTipPin!=true){
				mopTipFunc.findPosi(evt);
			}
		});
		/*mouseout*/
		$(this).mouseout(function(){
			if((openMopTip==true)&&(mopTipStyle=="overOut")){
				mopTipFunc.tipClose();
			}else if((openMopTip==true)&&(mopTipStyle=="overClick")){
				if(mopTipOpened!=true){
					openMopTip=false;
				}
			}
		});
		mopTipFunc={
			tipInit:function(){
				$("body").append(
					'<div id="viewTips">'+
					  '<div class="tip">'+
						'<div class="content"></div>'+
					  '</div>'+
					  '<div class="leftTop"></div>'+
					  '<div class="rightTop"></div>'+
					  '<div class="leftBottom"></div>'+
					  '<div class="rightBottom"></div>'+
					  '<div class="arrow"></div>'+
					  '<div class="arrowBottom"></div>'+
					  '<div class="left"></div>'+
					  '<div class="right"></div>'+
					  '<div class="top"></div>'+
					  '<div class="bottom"></div>'+
					  '<div class="close"></div>'+
					'</div><div id="viewTips">'+
					  '<div class="tip">'+
						'<div class="content"></div>'+
					  '</div>'+
					  '<div class="leftTop"></div>'+
					  '<div class="rightTop"></div>'+
					  '<div class="leftBottom"></div>'+
					  '<div class="rightBottom"></div>'+
					  '<div class="arrow"></div>'+
					  '<div class="arrowBottom"></div>'+
					  '<div class="left"></div>'+
					  '<div class="right"></div>'+
					  '<div class="top"></div>'+
					  '<div class="bottom"></div>'+
					  '<div class="close"></div>'+
					'</div>'
				);
				$("#viewTips").pngfix();
				/*close button click*/
				$("#viewTips .close").click(function(){
					mopTipFunc.tipClose();
				});
			},
			findPosi:function(evt){
				var xOffset,yOffset;
				/*fix position*/
				if(jQuery.browser.msie==true){
					var scrollX = document.documentElement.scrollLeft;/*IE*/
					var scrollY = document.documentElement.scrollTop;/*IE*/
					var mouseX=window.event.clientX+scrollX;
					var mouseY=window.event.clientY+scrollY;
				}else{
					var scrollX = window.pageXOffset;/*other*/
					var scrollY = window.pageYOffset;/*other*/
					var mouseX=evt.pageX;
					var mouseY=evt.pageY;
				}
				mopTipWindW=document.documentElement.clientWidth;/*brotherW*/
				mopTipWindH=document.documentElement.clientHeight;/*brotherH*/
				var windXsc=mopTipWindW+scrollX;
				var windYsc=mopTipWindH+scrollY;
				var checkX=windXsc-mouseX;
				var checkY=windYsc-mouseY;
				var checkHeight=mopTipH+40+30;
				if((checkX>mopTipW)&&(checkY>checkHeight)){
					/*left top*/
					xOffset=-40;
					yOffset=30;
					$("#viewTips .arrow").css({
						top:"0px",
						left:"20px"
					});
					$("#viewTips .arrow").show();
					$("#viewTips .top").css({left:"60px",width:mopTipW-40+px});
					$("#viewTips .bottom").css({left:"20px",width:mopTipW+px});
					$("#viewTips .arrowBottom").hide();
				}else if((checkX<=mopTipW)&&(checkY>checkHeight)){
					/*right top*/
					xOffset=-mopTipW;
					yOffset=30;
					$("#viewTips .arrow").css({
						top:"0px",
						left:mopTipW-20+"px"
					});
					$("#viewTips .arrow").show();
					$("#viewTips .top").css({left:"20px",width:mopTipW-40+px});
					$("#viewTips .bottom").css({left:"20px",width:mopTipW+px});
					$("#viewTips .arrowBottom").hide();
				}else if((checkX>mopTipW)&&(checkY<=checkHeight)){
					/*left bottom*/
					xOffset=-40;
					yOffset=-(mopTipH+40+15);
					$("#viewTips .arrowBottom").css({
						bottom:"0px",
						left:"20px"
					});
					$("#viewTips .arrowBottom").show();
					$("#viewTips .bottom").css({left:"60px",width:mopTipW-40+px});
					$("#viewTips .top").css({left:"20px",width:mopTipW+px});
					$("#viewTips .arrow").hide();
				}else if((checkX<=mopTipW)&&(checkY<=checkHeight)){
					/*right bottom*/
					xOffset=-mopTipW;
					yOffset=-(mopTipH+40+15);
					$("#viewTips .arrowBottom").css({
						bottom:"0px",
						left:mopTipW-20+px
					});
					$("#viewTips .arrowBottom").show();
					$("#viewTips .bottom").css({left:"20px",width:mopTipW-40+px});
					$("#viewTips .top").css({left:"20px",width:mopTipW+px});
					$("#viewTips .arrow").hide();
				}
				/*setting mopTip*/
				$("#viewTips").css({
					left:mouseX+xOffset+px,
					top:mouseY+yOffset+px,
					width:mopTipW+40+px,
					height:mopTipH+40+px
				});
			},
			/*open*/
			tipOpen:function(){
				if(openMopTip==true){
					/*put content*/
					$("#viewTips .content").html(mopTipContent);
					$("#viewTips").show();
					mopTipOpened=true;
					mopTipCount+=1;
				}
			},
			/*close*/
			tipClose:function(){
				$("#viewTips .close").hide();
				$("#viewTips .arrow").hide();
				$("#viewTips .arrowBottom").hide();
				$("#viewTips").hide();
				mopTipOpened=false;
				openMopTip=false;
				mopTipPin=false;
				if( (mopTipType == "alt") || (mopTipType == "title") ){
					$(mopTipCurrent)
						.attr("title",mopTipTitle)
						.attr("alt",mopTipAlt);
					mopTipTitle				= "";
					mopTipAlt				= "";
				};
			}
			
		}
	}
});
