       //copyright by ice - ice@яндекс.ru
       //uses include script/stl.js
       //how to use
       //onmouseover="popup('popap1')" onmouseout="hide('popap1')" 
       //div onmouseover="window.clearInterval(hashIntervals['popap1'])" onmouseout="hide('popap1')" id="popap1" style="visibility:hidden;position:absolute; left:100px; top:100px;filter:progid:DXImageTransform.Microsoft.Fade(Duration=1);
        var mouse_x=0;
        var mouse_y=0;
              
				var hashIntervals=new Object();
        
        
        function popup(id)
        {
        		var el=GetById(id);
            var bd=getBody();
            var deltaX=getWindowWidth()-(mouse_x+getElementWidth(el)-bd.scrollLeft);
                              
            if(hashIntervals[id]!=null)
            {
            	window.clearTimeout(hashIntervals[id]);
            	hashIntervals[id]=null;
            }else
            {
            
              if(deltaX<0)
              {
          	    el.style.left=(mouse_x+deltaX-10)+"px";
              }else
              {
          	 		el.style.left=(mouse_x)+"px";
           		}
          		
          		var deltaY=getWindowHeight()-(mouse_y+getElementHeight(el)-bd.scrollTop);
          		if(deltaY<0)
          		{
            		el.style.top=(mouse_y+deltaY-10)+"px";
          		}else
          		{
          			el.style.top=mouse_y+"px";
          		}
              
              
              var blnCanUseFade=false;
              if(el.filters)
              	if(el.filters.length)
              	{
          	    	blnCanUseFade=true;
              	}
          		if(blnCanUseFade) el.filters.item(0).Apply();
          		el.style.visibility="visible";
          		if(blnCanUseFade) el.filters.item(0).Play();
        		}
        }

        function hide(id)
        {
            hashIntervals[id]=window.setTimeout("hideAfterSomeSecs('"+id+"')",500);
        }
				
				function hideAfterSomeSecs(id)
				{
         		var el=GetById(id);
            var blnCanUseFade=false;
            if(el.filters)
            	if(el.filters.length)
            	{
        	    	blnCanUseFade=true;
            	}

        		if(blnCanUseFade) el.filters.item(0).Apply();
        		el.style.visibility="hidden";
        		if(blnCanUseFade) el.filters.item(0).Play();
						hashIntervals[id]=null;
				}
        
        var oldMouseMove=document.onmousemove;
        document.onmousemove=mousemove;
        
        function mousemove(e)
        {
        	var evt= e ? e : window.event;
        	var bd=getBody();
        	mouse_x=evt.clientX+bd.scrollLeft;
        	mouse_y=evt.clientY+bd.scrollTop;
        	if(e)
        	{
        		if(oldMouseMove) oldMouseMove(e);
        	}else
        	{
          	if(oldMouseMove) oldMouseMove();
        	}
        }

