var offsetfrommouse = [15, 0]; 			// смещение контейнера превьюшки от курсора
var displayduration = 0; 				// количество секунд, которые превьюшка должна оставаться видимой (о - всегда)

var compwidth = 0;						// ширина контейнера вместе с картинкой
var compheight = 0;						// высота контейнера вместе с картинкой

// пишем в документ div-контейнер для превьюшки
function loadQT()
{
   if (document.getElementById || document.all) {
	document.write('<div class="img_window" id="trailimageid"><img src="/i/wait.gif"></div>');
	gettrailobj().width=0;
	gettrailobj().height=0;
   	gettrailobj().left="-1000px";
   	gettrailobj().top="0px";
	gettrailobj().visibility="hidden";
   	gettrailobj().display="";
   }

}

// вызываем функцию сразу при подключении скрипта
loadQT();

// получаем объект стилей для div-контейнера
function gettrailobj()
{
	if (document.getElementById)
		return document.getElementById("trailimageid").style;
	else if (document.all)
		return document.all.trailimagid.style;
}

// получаем первый дочерний элемент документа (зачем?)
function truebody()
{
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}


// вывод превьюшки возле курсора (событие onmouseover)
// comppath - путь к превьюшкеы
function showtrail(comppath)
{
  document.onmousemove = followmouse; // назначаем событие "followmouse" при передвижении мыши
  
  // генерируем для div-контейнера внутренний HTML-код с превьюшкой
  document.getElementById("trailimageid").innerHTML = '<div class="enl_img"><img id="p_img" src="'+comppath+'" border="0"></div>';
  
  compwidth = document.getElementById('p_img').width + 10;
  compheight = document.getElementById('p_img').height + 10;
  
  // делаем его видимым
  gettrailobj().visibility="visible";
}

// сокрытие превьюшки
function hidetrail()
{
	gettrailobj().visibility = "hidden";
	gettrailobj().left = "-1000px";
	document.onmousemove = "";	// очистка события движения за мышью
}


// событие движения певьюшки за мышью
function followmouse(e)
{
  var xcoord = offsetfrommouse[0];	// смещение контейнера превьюшки по x
  var ycoord = offsetfrommouse[1];  // смещение контейнера превьюшки по y
  
  compwidth = document.getElementById('p_img').width + 10;
  compheight = document.getElementById('p_img').height + 10;
  
  // ширина окна с документом (считается по-разному, в зависимости от броузера)
  var docwidth = document.all ? truebody().scrollLeft + truebody().clientWidth : pageXOffset + window.innerWidth - 15;
  
  // высота окна с документом (считается по-разному, в зависимости от броузера)
  var docheight = document.all ? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(document.body.offsetHeight, window.innerHeight);


    if (typeof e != "undefined") {
      // Mozilla
      xcoord+= e.pageX;	// считаем координаты контейнера относительно координат курсора
      ycoord+= e.pageY;
      
      // если правый край картинки выходит за пределы документа, смещаем превьюшку влево от курсора
      if (xcoord + compwidth > docwidth)
        xcoord = e.pageX - compwidth - offsetfrommouse[0];
      
      // если нижний край картинки выходит за границы документа, смещаем превьюшку вверх от курсора  
      if (ycoord + compheight > docheight + truebody().scrollTop)
        ycoord = (truebody().scrollTop + docheight) - compheight;

      // this is to move the .top up if it is too far down from the mouse pointer
      if (ycoord > (truebody().scrollTop + e.pageY))
         ycoord  = ycoord  - (ycoord - (truebody().scrollTop + e.pageY));

    }
    else if (typeof window.event !="undefined") {
      // IE browser
      xcoord+= truebody().scrollLeft + event.clientX;
      ycoord+= truebody().scrollTop + event.clientY;

      if (xcoord + compwidth > docwidth) 
        xcoord = (truebody().scrollLeft + event.clientX) - compwidth - offsetfrommouse[0];
        
      if (ycoord + compheight > docheight + truebody().scrollTop) 
        ycoord = (truebody().scrollTop+docheight) - compheight;

      // this is to move the .top up if it is too far down from the mouse pointer
      if (ycoord > (truebody().scrollTop+event.clientY))
         ycoord  = ycoord  - (ycoord - (truebody().scrollTop+event.clientY));
    }



  if (xcoord < 0 || ycoord < 0) {
    gettrailobj().visible = "none";
    gettrailobj().display = "";
  } else {
    gettrailobj().display = "";
    gettrailobj().left = xcoord + "px";
    gettrailobj().top = ycoord + "px";
  }  
}
