var GoogleMapRef;				// 放地图的表格对象
var GoogleMapPanel;				// 放地图的容器对象，这个容器放在上面的表格里
var GoogleMapCoordsRef;			// 放地图的表格坐标参数
var GoogleMapCoordsCon;			// 放地图的容器的坐标参数
var SlowSpeedTimeoutCheck = 1000;	// 地图不移动时的检测时间
var HighSpeedTimeoutCheck = 25;		// 地图在移动时的检测时间
var NexttimeoutCheck = SlowSpeedTimeoutCheck;	// 检测的时间差分, 为了减少占用的资源，定义了两个时间
var MovStep = 10;				// 地图移动的步长
var NewMovY = 0;				// 新的垂直坐标
var heightSub = 0;				// 页面和地图容器的垂直高度差
var PanelTopTabTopSub = 0;		// 表格顶部和地图容器的垂直高度差
var docScrollTop;

/*******************************************************************************
**	函数名称:	pageLoad
**		描述:	当网页加载完成时被调用
*******************************************************************************/
function GetElementCoords (sender)
{
	var coords = { x: 0, y: 0, width: sender.offsetWidth, height: sender.offsetHeight };
	while (sender)
	{
		coords.x += sender.offsetLeft;
		coords.y += sender.offsetTop;
		sender = sender.offsetParent;
	}
	return coords;
}

function ScrollMap()
{
	// 得到页面滚动的顶部坐标，兼容不同的浏览器
	docScrollTop = document.body.scrollTop | document.documentElement.scrollTop;
	GoogleMapCoordsCon = GetElementCoords(GoogleMapPanel);	// 得到地图容器的坐标参数

	NewMovY = GoogleMapCoordsCon.y;
	heightSub = docScrollTop - GoogleMapCoordsCon.y;	// 页面顶部坐标和地图容器顶部坐标差
	PanelTopTabTopSub = GoogleMapCoordsRef.y - GoogleMapCoordsCon.y;	// 表格和地图容器顶部坐标差

	if(heightSub >= 0)
	{
		if(heightSub > GoogleMapCoordsCon.height * 3)	// 如果距离太远，则瞬间移动
		{
			NewMovY += heightSub - MovStep;
			NexttimeoutCheck = 0;
		}
		else if(heightSub > GoogleMapCoordsCon.height/4)
		{
			NexttimeoutCheck = 0;
		}
		else
		{
			NexttimeoutCheck = HighSpeedTimeoutCheck;
		}

		// 移动地图
		NewMovY += MovStep;
		GoogleMapPanel.style.top = NewMovY + "px";
	}
	else if(PanelTopTabTopSub < -MovStep && heightSub < -MovStep)
	{
		// 如果距离太远则瞬间移动
		if(((-heightSub) > GoogleMapCoordsCon.height * 3) && ((-PanelTopTabTopSub) > GoogleMapCoordsCon.height * 3))
		{
			if(heightSub > PanelTopTabTopSub)
				NewMovY += heightSub + MovStep;
			else
				NewMovY += PanelTopTabTopSub + MovStep;

			NexttimeoutCheck = 0;
		}
		else if((-heightSub) > GoogleMapCoordsCon.height/4)
		{
			NexttimeoutCheck = 0;
		}
		else
		{
			NexttimeoutCheck = HighSpeedTimeoutCheck;
		}

		// 移动地图
		NewMovY -= MovStep;
		GoogleMapPanel.style.top = NewMovY + "px";
	}
	else
	{
		NexttimeoutCheck = SlowSpeedTimeoutCheck;
	}
	
	tid = setTimeout ("ScrollMap()", NexttimeoutCheck);	// 定时检测滚动地图
}
/*******************************************************************************
**	函数名称:	pageLoad
**		描述:	当网页加载完成时被调用
*******************************************************************************/
function pageLoad()
{
	GoogleMapRef = document.getElementById("GoogleMapRef");
	GoogleMapPanel = document.getElementById("GoogleMapPanel");
	GoogleMapCoordsRef = GetElementCoords(GoogleMapRef);
	ScrollMap();
}
/*******************************************************************************
**	函数名称:	addLoadEvent
**		描述:	这个函数在 ShopAll.aspx 顶部，用来向window.onload 添加函数
*******************************************************************************/
addLoadEvent(pageLoad);
