

var MapHintInit,timer, Layer_Hint=false, Layer_Hint_Root=false, Table_Hint=false;
ObjInfoHint=new Array();
CurrHint=-1;

// ================================= //
function MapMouseMove(e)
{
  if(!MapHintInit || insideMap) return;
  
  if (isIE) {
  		var x	=	event.offsetX;
		var y	=	event.offsetY;
		var MapHintObj = document.getElementById("MapHint");
//		alert(x+'x'+y+' '+MapHintObj);
  } else if (isFF || isMoz) {
		var x = e.clientX + document.body.scrollLeft - document.getElementById("map_image").x;
		var y = e.clientY + document.body.scrollTop - document.getElementById("map_image").y;
		var MapHintObj = document.getElementById("MapHint");
		// Set width and height for cell to render itself
		if ((Layer_Hint.visibility != 'visible') && ((Layer_Hint.width == "") || (Layer_Hint.height == ""))) {
			Layer_Hint.width = 10;
			Layer_Hint.height = 10;
		}
  } else if (isOp) {
		var MapHintObj = document.getElementById("MapHint");
  		var x	=	e.pageX - Map_X;
		var y	=	e.pageY - Map_Y;
  }
  
  var z = new Array();
  
  var i = FindFirstHint(x - 8);
  var j;

//  alert(i);
	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)
	{
		if (Layer_Hint.visibility == "visible") visibl_hint(0);
    	while(MapHintObj.rows.length) MapHintObj.deleteRow(0);
    		ObjInfoHint=new Array();
		return;
  }

  z.sort(IntSortFunc);
  for(i=j=0;i<z.length;)
  {
  	if((j>=ObjInfoHint.length)||(z[i]<ObjInfoHint[j]))
  	{
  		MapHintObj.width="50";
  		TR=MapHintObj.insertRow(-1);
  		TR.idx=z[i];
  		TD=TR.insertCell(-1);
		TD.noWrap = true;
  		TD.className='hintmap_td';
  		TD.style.backgroundColor='#FCFFBF';
  		HTML='<img src='+url+'map/img/inf.gif align=absmiddle width="22" height="14"> &nbsp;';
  		HTML+=ObjInfo[z[i]][3];
  		TD.innerHTML=HTML;
  		TD.onmouseover = HintMouseOver;
  		TD.onmouseout = HintMouseOut;
  		TD.onmousedown=new Function('HintMouseDown('+ObjInfo[z[i]][0]+','+ObjInfo[z[i]][4]+','+ObjInfo[z[i]][5]+')');
  		i++;
  		MapHintObj.width="";
  	}
  	else if(z[i]>ObjInfoHint[j])
  	{
  		for(var row=0;row < MapHintObj.rows.length;row++)
  		if(MapHintObj.rows[row].idx==ObjInfoHint[j])
  		{
  			MapHintObj.deleteRow(row);
  			break;
  		}
  		j++;
  	}
  	else
  	{
  		i++; j++;
  	}
  }
  for(;j<ObjInfoHint.length;j++)
	  for(var row=0;row<MapHintObj.rows.length;row++)
  	  if(MapHintObj.rows[row].idx==ObjInfoHint[j])
    	  MapHintObj.deleteRow(row);

   ObjInfoHint=z;

	X_hint = Map_X + x;
	Y_hint = Map_Y + y;

	if (isIE || isOp) {
		if(Math.abs(X_hint - Layer_Hint.pixelLeft) > 5) {
			Layer_Hint.pixelLeft = X_hint;
		}
		if(Math.abs(Y_hint - Layer_Hint.pixelTop) > 5)
		{
			Layer_Hint.pixelTop = Y_hint;
		}
	}
	if (isFF || isMoz) {
		Layer_Hint.width = MapHintObj.offsetWidth;
		Layer_Hint.height = MapHintObj.offsetHeight;
		if(Math.abs(X_hint - Layer_Hint_Root.offsetLeft) > 5) {
			Layer_Hint.left = X_hint;
		}
		if(Math.abs(Y_hint - Layer_Hint_Root.offsetTop) > 5)
		{
			Layer_Hint.top = Y_hint;
		}
	}
	Layer_Hint.visibility = "visible";
	if (Table_Hint) Table_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(e){
	// Retrieve object, that generates event
	var found = false;
	if (isIE || isOp) {
		// Info pic can generate OnMouseMove too, so get its sublying TD element
		for (src = event.srcElement; src; src = src.parentElement){
			if (src.tagName == 'TD') {
				found = true;
				break ;
			}
		}
	}
	if (isFF || isMoz) {
		for (src = e.target; src; src = src.parentNode) {
			if (src.tagName == 'TD') {
				found = true;
				break ;
			}
		}
	}
	// Set properties
	if (found) {
		src.style.color='yellow';
		src.style.backgroundColor='black';
		if (isIE || isOp) src.style.cursor = 'hand';
		if (isFF || isMoz) src.style.cursor = 'pointer';
	}
	visibl_hint(1);
}

function HintMouseOut(e)
{
	var found = false;
	if (isIE || isOp) {
		for(src=event.srcElement;src;src=src.parentElement) {
			if (src.tagName == 'TD'){
				found = true;
				break ;
			}
		}
	}
	if (isFF || isMoz || isOp) {
		for(src=e.target;src;src=src.parentElement) {
			if (src.tagName == 'TD') {
				found = true;
				break ;
			}
		}
	}
	if (found) {
		src.style.color = 'black';
		src.style.backgroundColor='#FCFFBF';
	}
	timer=setTimeout('visibl_hint(0)', 100);
}

function HintMouseDown(layer_id, object_id, style_id){
	//if (layer_id!=3098) return false;
//	wind_inf=open('get_info.php?layer_id='+layer_id+'&object_id='+object_id+'&style_id='+style_id, 'inform', '')
//	wind_inf=open('realty_object_view.php?id_realty_object='+object_id, 'inform', '')
	if (object_id==77777)
	{
		wind_inf=open('http://www.lemberg.ua/ukr/content/55/', 'inform', '');
	}
	else if(object_id==77776)
	{
	wind_inf=open('http://marketrent.com.ua/business_catalog/proposal/3', 'inform', '');
	}
	else
	{
		wind_inf=open('object/'+object_id, 'inform', '');
	}
	
	wind_inf.focus();
	if (isIE) {
		for(src=event.srcElement;src;src=src.parentElement)
		{
			if (src.tagName == 'TD')
			{
				src.style.backgroundColor='#0000FF';
				break ;
			}
		}
	}
}

function load_hints(){
	ObjInfo.sort(ObjInfoSortFunc);
	mapPospage();
	if (isIE || isOp) {
		Layer_Hint = document.all.MapHint.style;
		Layer_Hint_Root = document.all.MapHint;
	}
	if (isFF || isMoz) {
		Layer_Hint_Root = document.getElementById("maphint_div");
		Layer_Hint = Layer_Hint_Root.style;
		Table_Hint = document.getElementById("MapHint").style;
	}
	MapHintInit = true;
}

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

