
var map_width=32;
var sid="";
var isover = false;
var timeoutid1 =0;
var timeoutid2 =0;

var zone_id='';
var zone_ray=0;
var zone_enable=false;
var zone_x=0;
var zone_y=0;
//var zone_px=-1;
//var zone_py=-1;
var zone_range=0;
var zone_url=""

//var LayerStartX=0;
//var LayerStartY=0;
var LayerLastX=-1;
var LayerLastY=-1;
//var MapEndX=0
//var MapEndY=0;
var isIE=document.all;
var OverX=-1;
var OverY=-1;
var jg = null;
//var isIE=document.all;
	
function zone_over(e)
{
	var zone=document.getElementById(zone_id);
	var x=(isIE?event.offsetX:e.pageX-zone.offsetLeft);
	var y=(isIE?event.offsetY:e.pageY-zone.offsetTop);
	over(zone_x+Math.floor(x/17)-zone_ray,zone_y+Math.floor(y/17)-zone_ray);
}
function zone_click(e)
{
	var zone=document.getElementById(zone_id);
	var x=(isIE?event.offsetX:e.pageX-zone.offsetLeft);
	var y=(isIE?event.offsetY:e.pageY-zone.offsetTop);
	x=zone_x+Math.floor(x/17)-zone_ray;
	y=zone_y+Math.floor(y/17)-zone_ray;
	window.parent.frames['game_bottom'].location.href=zone_url+"&sid="+sid+"&act=zone&tx="+x+"&ty="+y;
}
function LayerOut(e)
{
	clearTimeout(timeoutid1);
	out(LayerLastX,LayerLastY);
}
function LayerOver(e)
{
	var isIE=document.all;
	var table=document.getElementById("maptable");
	if(null==table)
		return;
	var off = getAbsOffset(table);
	var tx=off[0];
	var ty=off[1];
	var x=(isIE?event.x:e.pageX)-tx;
	var y=(isIE?event.y:e.pageY)-ty;
	x=Math.floor(x/17)-1+maprect[0];
	y=Math.floor(y/17)-1+maprect[1];
	
	
	
	if(LayerLastX!=x || LayerLastY!=y)
	{
		clearTimeout(timeoutid1);
		out(LayerLastX,LayerLastY);
		LayerLastX=x;
		LayerLastY=y;
	}
	if(LayerLastX>=maprect[0] && LayerLastY>=maprect[1] && LayerLastX<maprect[2] && LayerLastY<maprect[3])
	{
		over(LayerLastX,LayerLastY);
	}
	
	position(e);
}
function LayerClick(e)
{
	var isIE=document.all;
	var table=document.getElementById("maptable");
	if(null==table)
		return;
	var off = getAbsOffset(table);
	var tx=off[0];
	var ty=off[1];
	var x=(isIE?event.offsetX+17:e.pageX-tx);
	var y=(isIE?event.offsetY+17:e.pageY-ty);
    //alert("click "+x+"."+y);
	x=Math.floor(x/17)-1+maprect[0];
	y=Math.floor(y/17)-1+maprect[1];
	cellclick(x,y);
}

function hilite_zone(x,y,val)
{
	var zone=document.getElementById(zone_id);
	var pos = getcell_pos(x,y);
	if(pos[0]==-1)
		val=0;
	var dx=pPlayer[0]-x;dx=dx*dx;
	var dy=pPlayer[1]-y;dy=dy*dy;
	if(dx+dy>zone_range)
		val=0;
		
	zone.style.visibility = (val?'visible':'hidden');
	if(val)
	{
		zone_x=x;
		zone_y=y;
		zone.style.left=pos[0]-zone_ray*17;
		zone.style.top=pos[1]-zone_ray*17;
	}
}
function hilite_detec(x,y,val)
{
	var frame=window.parent.frames["game_bottom"];
	if(null!=frame &&
		null!=frame.hilitecell)
			frame.hilitecell(x,y,val);
}

function reset_over()
{
	
	if(LayerLastX!=-1)
	{
		var obj=document.getElementById('mc'+LayerLastX);
		if(null!=obj)
			obj.style.color='#8899aa';
		//document.getElementById('mc'+LayerLastX).style.textDecoration='none';
	}
	if(LayerLastY!=-1)
	{
		var obj=document.getElementById('ml'+LayerLastY);
		if(null!=obj)
			obj.style.color='#8899aa';
		//document.getElementById('ml'+LayerLastY).style.textDecoration='none';
	}
}
function over(x,y)
{
	do{
		if(x!=OverX || y!=OverY)
		{
			OverX=x;
			OverY=y;
			isover = true;
		
			if(zone_enable)
				hilite_zone(x,y,1);
		
			document.getElementById('mc'+x).style.color='#DBB11E';
			document.getElementById('ml'+y).style.color='#DBB11E';
			
			
			var str = '';
	
			//{
			var index=0;
			var line=0;
			var img;
			var imgc;
			var notes="";
			var offset=x+y*map_width;
			if(null!=items[offset])
			{
				str += '<center><table cellspacing=0>';
				str += '<tr><td valign=top><table class=over_table cellspacing=0>';
				
				while(null!=items[offset][index])
				{
					
					if(line>4)
					{
						str+='</table></td><td valign=top><table class=over_table cellspacing=0>';
						line=0;
					}
					str += '<tr>';
					imgc=items[offset][index][ITEM_IMG_CLAN];
					if(0!=imgc)
					{
						//alert(imgc+" = > "+map_strings[imgc]);
						str += '<td><img src="/avatars/'+map_strings[imgc]+'" width="16" height="16"></td>';
					}
					else
					{
						str += '<td></td>';
					}
                    var pv = items[offset][index][ITEM_PS];
                    if(undefined!=pv && pv>0)
                    {
                        var color=(pv>70?'yellowgreen':(pv>30?'#8899aa':'firebrick'));
                        str+="<td align=middle style='width:4px;border-style:none;font-size:1px;padding:0px;'>"+drawVProgress(color,100-parseInt(pv),100,14,'left')+"</td>";
                    }
                    else
                    {
                        str += '<td></td>';
                    }
                    var pe = items[offset][index][ITEM_PES];
                    if(undefined!=pe && pe>0)
                    {
                        var color=(pe>50?'lightblue':'steelblue');
                        str+="<td align=middle style='width:4px;border-style:none;font-size:1px;padding:0px;'>"+drawVProgress(color,100-parseInt(pe),100,14,'left')+"</td>";
                    }
                    else
                    {
                        str += '<td></td>';
                    }
					bcat=items[offset][index][ITEM_CAT];
					if(bcat==3)//me
						img=map_images[0];
					else if(bcat==4)//other
						img=map_images[1];
					else if(bcat==2)//obj
						img=map_images[2];
					else
						img='./img/'+map_strings[items[offset][index][ITEM_IMG]];
						
					bnotes=items[offset][index][ITEM_NOTES];
                    //alert(bnotes);
					if(bnotes!="" && bnotes!="-")
						notes += bnotes;
						
					str += '<td><img src="'+img+'" width="16px" height="16px"></td>';
					str += '<td style="font-size:9px;font-weight:bold;text-align:center;">'+map_strings[items[offset][index][ITEM_NAME]]+'</td>';
					str += '</tr>';
					index++;
					line++;
					
					if(index>8)
					{
						str+='<tr><td colspan=3 style="font-weight:bold;text-align:center;">...</td></tr>';
						break;
					}
				}
				str += '</table></td></tr>';
				str += '</table></center>';
			}
			//}
			
	
	
				
			if(index>0)
			{
				var d=Math.floor(0.5+Math.sqrt((mappos[0]-x)*(mappos[0]-x)+(mappos[1]-y)*(mappos[1]-y)));
				
				document.getElementById('overmenu').style.visibility = 'visible';
				document.getElementById('overcase').innerHTML = '<b>Case '+x+','+y+ '</b> (distance: '+d+')';
				if(notes!="")
				{
					document.getElementById('overnotes').innerHTML = notes;
					document.getElementById('overnotes').style.display='block';
				}
				else
				{
					document.getElementById('overnotes').style.display='none';
				}
				document.getElementById('overcontent').innerHTML = str;
				
				clearTimeout(timeoutid1);
				timeoutid1=setTimeout('hilite_detec('+x+','+y+',1)',500);
			}
			/*
			if(null == jg)
			{
			 jg = new jsGraphics("canvas");
			}
			var table=document.getElementById("maptable");
			if(table==null)
				return;
			var tx=(isIE?table.offsetLeft:table.offsetLeft);
			var ty=(isIE?table.offsetTop:table.offsetTop);
	
			jg.clear();
			jg.setColor("#ffd200");
			jg.setStroke(1);  
			//jg.drawLine(0,0,50,50);
			var rect = new Array(tx+(mappos[0]-maprect[0])*17+17+9,
					ty+(mappos[1]-maprect[1])*17+17+9,
					tx+(x-maprect[0])*17+17+9,
					ty+(y-maprect[1])*17+17+9);
			
			jg.drawLine(rect[0],rect[1],rect[2],rect[3]);
			jg.setColor("#ffd200");
			var d=Math.floor(0.5+Math.sqrt((mappos[0]-x)*(mappos[0]-x)+(mappos[1]-y)*(mappos[1]-y)));
			jg.setFont("Verdana",9);
			jg.drawStringRect2(d+" cases",rect[0]+(rect[2]-rect[0])/2,rect[1]+(rect[3]-rect[1])/2);
			jg.paint();
		*/
		}
		
		
		
	}while(false);
}

function out(x,y)
{
	
	do{
		reset_over();
		
		timeoutid2=setTimeout('hilite_detec('+x+','+y+',0)',100);
		
		document.getElementById('overmenu').style.visibility = 'hidden';
		isover = false;
	}while(false);
}



function lock()
{
}

function unlock()
{
	document.getElementById('overclose').style.display = 'none';
	document.getElementById('overmenu').style.visibility = 'hidden';
}
function max(a,b)
{
	return a>b?a:b;
}
function position(e)
{
	if (isover)
	{
		var table=document.getElementById("maptable");
		if(table==null)
			return;
		var off = getAbsOffset(table);
        
		var tx=off[0];
		var ty=off[1];   
	
		var mouseX=(isIE?event.offsetX+17:e.pageX-tx);
		var mouseY=(isIE?event.offsetY+17:e.pageY-ty);
	
	
		var omenu=document.getElementById('overmenu');
		if(omenu==null)
			return;
		var ow=parseInt(omenu.clientWidth);//style.width);
		var oh=parseInt(omenu.clientHeight);
		var shiftX=false;
//		window.status=ow;
		var newx = mouseX + 15;
		//alert(sizePageX() + " current= "+(newx+ow));
		if(newx+ow>sizePageX())
		{
			newx=sizePageX()-ow;
			shiftX=true;
		}
		
		omenu.style.left = newx+tx;
		
		var newy = mouseY + 10;
		if(newy+oh>sizePageY())
		{
			if(shiftX)
				newy=mouseY-oh-10;
			else
				newy=sizePageY()-oh;
		}
		omenu.style.top = newy+ty;
		
	}
	
}

function sizePageX()
{
	return (maprect[2]-maprect[0]+1)*17+3;
}
function sizePageY()
{
	return (maprect[3]-maprect[1]+1)*17+2;
}

function genereMenu()
{
	str  = '<div class="overmenu" id="overmenu" style="visibility:hidden;top:50px;left:150px;z-index:50;">';
	str += ' <div style="background-color: #555588;font-size:9px;color:#fff;border:1px solid #555577;font-family:verdana" id="overcase"></div>';
	str += ' <div id="overcontent" style="border:1px solid #555577;background: #111133 url(\'./img/ytab2.gif\') repeat-y 0px 0px;"></div>';
	str += ' <div style="background: #444466 url(\'./img/note.gif\') no-repeat 0px 0px;font-size:9px;font-weight:bold;color:#fef;border:1px solid #444466;font-family:verdana;padding-left:12px;" id="overnotes"></div>';
	//str += ' <div style="font-size:9px;color:#8899aa;font-family:verdana;display:none" id="overclose"><button style="font-size:9px;font-family:verdana" onclick="unlock()">Close</button></div>';
	str += '</div>';
	document.write(str);
}
