﻿function AutoPlayClass(ControlArea, PlayArea)
{
	var g_iCurrentIndex = 0;
	var g_aryControls = GetChildNodes(document.getElementById(ControlArea));
	var g_aryPlayObjects = GetChildNodes(document.getElementById(PlayArea));
	var g_objInterval;
	
	function AddElementEvents()
	{
		for(var i = 0; i < g_aryPlayObjects.length; i++)
		{
			g_aryPlayObjects[i].onmouseover = PausePlay;
			g_aryPlayObjects[i].onmouseout = ContinuePlay;
			
			g_aryControls[i].onmouseover = StopPlay;
			g_aryControls[i].onmouseout = ContinuePlay;
		}
	}
	
	// 鼠标放在播放对象上
	var PausePlay = function()
	{
		clearInterval(g_objInterval);
	}
	
	var StopPlay = function()
	{
		var obj = GetEventTarget();
		iNextIndex = GetIndexInArray(obj, g_aryControls);
		clearInterval(g_objInterval);
		ShowSelect(iNextIndex);
	}
	
	var ContinuePlay = function()
	{
		g_objInterval = setInterval(AutoPlay, 2000);
	}

	var ShowSelect = function(iNextIndex)
	{
		if(iNextIndex != g_iCurrentIndex)
		{
			g_aryControls[g_iCurrentIndex].className = g_aryControls[g_iCurrentIndex].className.replace("_Active", "");
			g_aryPlayObjects[g_iCurrentIndex].style.display = "none";
			g_iCurrentIndex = iNextIndex;
			
			g_aryControls[g_iCurrentIndex].className += "_Active";
			
			if(g_aryPlayObjects[g_iCurrentIndex] != null)
			{
				g_aryPlayObjects[g_iCurrentIndex].style.display = "block";
			}
		}
	}

	var AutoPlay = function()
	{
		var iNextIndex = g_iCurrentIndex - 1;
		if(iNextIndex < 0)
		{
			iNextIndex = g_aryPlayObjects.length - 1;
		}
		ShowSelect(iNextIndex);
	}
	
	AddElementEvents();
	g_aryControls[0].className += "_Active";
	g_objInterval = setInterval(AutoPlay, 2000);

	function GetChildNodes(ParentNode)
	{
		var aryResult = new Array();
		var aryChildNodes = ParentNode.childNodes;
		
		for(var i = 0; i < aryChildNodes.length; i++)
		{
			if(aryChildNodes[i].nodeType == 1)
			{
				aryResult.push(aryChildNodes[i]);
			}
		}
		return aryResult;
	}

	function GetEvent()
	{
		if (document.all)
		{
			return window.event;
		}
		
		// 递归查找产生Event或MouseEvent的事件，取event返回
		var functionTag = GetEvent.caller;
		while(functionTag != null)
		{
			var arg = functionTag.arguments[0];
			if(arg)
			{
				if(arg.constructor == Event || arg.constructor == MouseEvent || arg.constructor == KeyboardEvent)
				{
					return arg;
				}
			}
			functionTag = functionTag.caller;
		}
		return null;
	}

	function GetEventTarget()
	{
		if(document.all)
		{
			return GetEvent().srcElement;
		}
		else
		{
			return GetEvent().target;
		}
	}

	var GetIndexInArray = function(objTarget, aryContainer)
	{
		for(var i = 0; i < aryContainer.length; i++)
		{
			if(objTarget == aryContainer[i])
			{
				return i;
			}
		}
		return -1;
	}
}
