var MapHintInit,timer,Laeyr_hint=false;
ObjInfoHint=new Array();
CurrHint=-1;

// ================================= //
function MapMouseMove()
{
	if(!MapHintInit || inside) return;
  var x=event.offsetX;
  var y=event.offsetY;
  var z=new Array();
  var i=FindFirstHint(x-8); // предворительная проверка на выполнение критерия
  var j;
  
	if(i == -1) return;

	// Проверка на вхождения хинтов в допустимую зону
	for(;(i<ObjInfo.length)&&(ObjInfo[i][1]<(x+8));i++)if((y-8<ObjInfo[i][2])&&(ObjInfo[i][2]<y+8))z[z.length]=i;

	if( !z.length)
	{
		// Удаления всех зозданых рание хинтов
  	visibl_hint(0);
    while(MapHint.rows.length) MapHint.deleteRow(0);
    ObjInfoHint=new Array();
		return;
  }

  z.sort(IntSortFunc);
  for(i=j=0;i<z.length;)
	{
   	if((j>=ObjInfoHint.length)||(z[i]<ObjInfoHint[j]))
		{
		 	// Создание и оформления всех отобраных хинтов
     	TR=MapHint.insertRow();
      TR.idx=z[i];
      TD=TR.insertCell();
	  	HTML='<img src=img/map/inf1.gif align=absmiddle> &nbsp;';
      HTML+=ObjInfo[z[i]][3];
      TD.innerHTML=HTML;
      TD.className='hintmap_td';
      TD.style.backgroundColor='#FCFFBF';
      TD.onmouseover=new Function('HintMouseOver()');
      TD.onmouseout=new Function('HintMouseOut()');
      TD.onmousedown=new Function('HintMouseDown('+ObjInfo[z[i]][0]+','+ObjInfo[z[i]][4]+','+ObjInfo[z[i]][5]+')');
      i++;
		}
    else if(z[i]>ObjInfoHint[j])
    {
			// Удаления хинта который уже не попадает в допустимую зону
    	for(var row=0;row<MapHint.rows.length;row++)
      	if(MapHint.rows(row).idx==ObjInfoHint[j])
        {
        	MapHint.deleteRow(row);
          break;
        }
      j++;
    }
    else
    {
    	i++; j++;
    }
  }

  for(;j<ObjInfoHint.length;j++)
	  for(var row=0;row<MapHint.rows.length;row++)
  	  if(MapHint.rows(row).idx==ObjInfoHint[j])
    	  MapHint.deleteRow(row);

  ObjInfoHint=z; //

	// Назначения координат зозданым хинтам
	X_hint=Map_X+x;
	Y_hint=Map_Y+y;
	
  if(Math.abs(X_hint-Laeyr_hint.pixelLeft)>5)
		Laeyr_hint.pixelLeft=X_hint

  if(Math.abs(Y_hint-Laeyr_hint.pixelTop)>5)
		Laeyr_hint.pixelTop=Y_hint

  Laeyr_hint.visibility='visible';
}


// Сортируем все загруженые хинты 
function ObjInfoSortFunc(var1,var2){return var1[1]-var2[1]}

// Сортируем все хинты которые попадают в допустимую зону
function IntSortFunc(var1,var2){return var1-var2}

// Проверяем - есть ли хотябы один подходящий хинт 
function FindFirstHint(x)
{
	for(var i=0;i<ObjInfo.length;i++)if(ObjInfo[i][1]>x)return i;
	return -1;
}

// Вызывается при навидения на хинт
function HintMouseOver(){
  visibl_hint(1);
  for(src=event.srcElement;src;src=src.parentElement){
    if (src.tagName == 'TD'){
      src.style.color='yellow';
      src.style.backgroundColor='black';
      src.style.cursor='hand';
      break ;
    }
  }
}

// Вызывается при выходе курсора из хинта
function HintMouseOut()
{
  for(src=event.srcElement;src;src=src.parentElement)
  {
    if (src.tagName == 'TD'){
      src.style.color='black';
      src.style.backgroundColor='#FCFFBF';
      break ;
    }
  }
timer=setTimeout('visibl_hint(0)',100);
}

// Вызывается при нажатие на хинт
function HintMouseDown(layer_id, object_id, style_id){
if(layer_id==1309 || layer_id==3493)
  wind_inf=open('/re/re1/catalog/podrob.php?id='+object_id , 'inform', '')

 for(src=event.srcElement;src;src=src.parentElement)
 {
  if (src.tagName == 'TD')
  {
   src.style.backgroundColor='#0000FF';
   break ;
	}
 }
}

// Вызывается при полной загруски всех хинтов
function load_hints(){
ObjInfo.sort(ObjInfoSortFunc);
posmap();
Laeyr_hint=document.all.MapHint.style;
MapHintInit=true;
}

function visibl_hint (set)
{
 if(set && timer){
 clearTimeout(timer);
 timer=false;
 }
 else{
 Laeyr_hint.visibility='hidden';
 }
}