// JavaScript Document

/***********************
* Источник: http://pgood.fatal.ru/
* Пример к статье "Всплывающие подсказки на JavaScript"
* Автор: pgood@mail15.com
* коммерческое использование скрипта только с разрешения автора
*
* ИНСТРУКЦИЯ
* Просто подключите скрипт к любому HTML документу.
* Установите для данного документа следующие стили:

<style type="text/css">
div#prompt{ здесь декорируйте подсказки по своему усмотрению }
span.prompt{display:none;}
</style>

* Подсказки будут появляться для всех HTML элементов указанных в массиве myprompt.prompt_elements
* внутри которых есть тэг span c аттрибутом class="prompt"
* Например: <a href="">какой-то текст <span class="prompt">текст подсказки</span></a>)
************************/

var myprompt=document.createElement('div');
myprompt.id='prompt';
myprompt.style.display='none';
myprompt.style.position='absolute';
myprompt.style.top='0px';
myprompt.style.left='0px';
myprompt.show_delay=500; //задержка перед появлением подсказки в милисекундах
myprompt.hide_delay=200; //задержка перед исчезанием подсказки в милисекундах
myprompt.cursor_shiftX=20; //сдвиг относительно курсора по Х
myprompt.cursor_shiftY=-200; //сдвиг относительно курсора по Y
myprompt.prompt_elements=new Array('a','h1', 'b'); //дополните массив с HTML элементами по своему усмотрению

function showPrompt(event){
	if(!event) event=window.event;
	if(myprompt.mustShow==undefined){
		if(myprompt.timer_id){
			window.clearInterval(myprompt.timer_id);
			myprompt.mustHide=undefined;
		}
		myprompt.next_message=this.prompt_text;
		myprompt.mustShow=true;
		myprompt.oldX=event.clientX+document.body.scrollLeft;
		myprompt.oldY=event.clientY+document.body.scrollTop;
		myprompt.timer_id=window.setInterval('showPrompt();',myprompt.show_delay);
	}else{
		window.clearInterval(myprompt.timer_id);
		myprompt.innerHTML=myprompt.next_message;
		myprompt.timer_id=undefined;
		myprompt.mustShow=undefined;
		myprompt.style.left=(myprompt.oldX+myprompt.cursor_shiftX)+'px';
		myprompt.style.top=(myprompt.oldY+myprompt.cursor_shiftY)+'px';
		myprompt.style.display='block';
	}
}
function hidePrompt(){
	if(myprompt.mustHide==undefined){
		if(myprompt.timer_id){
			window.clearInterval(myprompt.timer_id);
			myprompt.mustShow=undefined;
		}
		myprompt.mustHide=true;
		myprompt.timer_id=window.setInterval('hidePrompt();',myprompt.hide_delay);
	}else{
		window.clearInterval(myprompt.timer_id);
		myprompt.timer_id=undefined;
		myprompt.mustHide=undefined;
		myprompt.style.display='none';
	}
}
function refreshPromptCoords(event){
	if(myprompt.mustShow==undefined) return;
	if(!event) event=window.event;
	myprompt.oldX=event.clientX+document.body.scrollLeft;
	myprompt.oldY=event.clientY+document.body.scrollTop;
}
function setPromptEvents(){
	document.body.appendChild(myprompt);
	for(var k=0; k<myprompt.prompt_elements.length; k++){
		var anchors=document.getElementsByTagName(myprompt.prompt_elements[k]);
		for(var i=0; i<anchors.length; i++){
			var spans=anchors[i].getElementsByTagName('span');
			if(spans.length==0) continue;
			for(var j=0; j<spans.length; j++){
				if(spans[j].className=='prompt'){
					anchors[i].prompt_text=spans[j].innerHTML;
					break;
				}
			}
			if(!anchors[i].prompt_text) continue;
			anchors[i].onmouseover=showPrompt;
			anchors[i].onmouseout=hidePrompt;
			anchors[i].onmousemove=refreshPromptCoords;
		}
	}
}
if (typeof document.attachEvent!='undefined') window.attachEvent('onload',setPromptEvents);
else window.addEventListener('load',setPromptEvents,false);
