/*=======================================
// jsTooltip
//
// 작성일 : 2008-08-19
// 수정일 : 2008-08-23
// 공대여자는 이쁘다를 나타내야만 쓸 수 있습니다.
// 이 파일은 수정해서 재배포 할 수 없습니다!
// 내가 사용하지 못하도록한 사람,것,들은 사용할 수 없습니다.
// 만든이 : mins,공대여자
// 홈페이지 : www.mins01.com
#동작
Tooltip(도움말풍선)을 만들다
#사용법
@1 : 수동으로 적용
내용입니다.
@2 : 대상의 이벤트에 적용되도록
내용입니다.
//주의 : event가 설정안될 경우 FF등에서는 올바르게 동작을 안함
#예
jsTooltip.html 참고
#설정
없음
#메소드
없음
#주의
config 설정잘못해서 질문하면 당신의 발바닥에 메테오스트라이크~
config의 style설정의 인덱스값은 fontSize 처럼 - 가 없는 형식이어햐합니다.
#제한사항
1. "공대여자는 예쁘다"를 표현할 것.
2. 저작자표시
3. 비영리
4. 변경금지
#연계파일
없음
# 브라우저 실험결과
IE6 : OK
IE7 : OK
FF2 : OK
FF3 : OK
Opera9 : OK
Sfari3(WIN) : OK
//=======================================*/
/* //설정
var config = {
,'gapLeft':5 //커서와의 왼쪽 거리(기본값 : 5)
,'gapTop':5 //커서와의 오른쪽 거리(기본값 : 5)
,'style':{'fontSize':'30px','width:100px'} //스타일설정(기본값 : 설정안함)
,'className':'tooltip' //CSS의 class 이름(기본값 : jsTooltip)
}
*/
var jsTooltip = function(evt,target,url,configSetting){
//==체크
var str = getHttprequest(url);
if(str==null || str==''){return false;}
var config = {'gapLeft':5 ,'gapTop':5 , 'className':'jsTooltip','style':{} };
if(configSetting){
for(x in configSetting){
if(config[x] != null){
config[x] = configSetting[x];
}
}
}
//== 변수값 설정
this.target = target
this.str = str
this.gapLeft = config['gapLeft'];
this.gapTop = config['gapTop'];
divTooltip = document.createElement('div');
divTooltip.className = config['className'];
divTooltip.innerHTML = this.str;
//divTooltip.appendChild(document.createTextNode(this.str));
this.target.divTooltip = divTooltip;
//== 스타일 설정
if(config['style'] != null){
for(x in config['style']){
divTooltip.style[x] = config['style'][x];
}
}
divTooltip.style.display = 'none';
divTooltip.style.left = 0;
divTooltip.style.right = 0;
divTooltip.style.position = 'absolute';
document.body.appendChild(divTooltip);
var thisC = this;
this.target.onmouseover = function(evt){ thisC.show(evt,thisC.target); }
this.target.onmousemove = function(evt){ thisC.show(evt,thisC.target); }
this.target .onmouseout = function(evt){ thisC.hide(evt,thisC.target); }
if(evt && evt.type == 'mouseover'){
thisC.show(evt,thisC.target);
}
}
jsTooltip.prototype.show = function(evt,target){
if(window.event){ evt = window.event ;}
if(target.divTooltip){
var scrollLeft = Math.max(document.documentElement.scrollLeft,document.body.scrollLeft);
var scrollTop = Math.max(document.documentElement.scrollTop,document.body.scrollTop);
var scrollWdith = Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);
var scrollHeight = Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
var divRight = parseInt(target.divTooltip.style.left) + target.divTooltip.offsetWidth;
var divBottom = target.divTooltip.offsetTop+target.divTooltip.offsetHeight;
var x = evt.clientX+this.gapLeft+scrollLeft;
var y = evt.clientY+this.gapTop+scrollTop;
if( evt.clientX <= target.divTooltip.offsetWidth ){ //왼쪽치우침 방지
}else if(scrollWdith - evt.clientX <= target.divTooltip.offsetWidth ){ //왼쪽치우침 방지
}else if(x + target.divTooltip.offsetWidth >= scrollWdith){ //왼쪽치우침 방지
x = x - target.divTooltip.offsetWidth - (this.gapLeft*2);
}
target.divTooltip.style.left = x+'px';
target.divTooltip.style.top = y+'px';
target.divTooltip.style.display = 'block';
}
}
jsTooltip.prototype.hide = function(evt,target){
if(target.divTooltip){
target.divTooltip.style.display = 'none';
}
}