﻿
function HMouseEvent()
{
	
	//COID is current object ID
	//P is pointer
	//IoSPS is Io event Switching Power Supply
	//UpSPS is Up event Switching Power Supply
	//OM is object memorizer
	//CID is class ID
	
	HMouseEvent.H_P=null;
	HMouseEvent.H_COID=null;
	HMouseEvent.H_UpSPS=1;
	HMouseEvent.H_IoSPS=1;
	HMouseEvent.H_OM=new Array();
	
	HMouseEvent.prototype.AddMouseUpEventListenin=function(obj)
	{
		var i=0;
		for(i=0;i<HMouseEvent.H_OM.length;i++)
		{
			if(obj.H_CID==HMouseEvent.H_OM[i][0].H_CID && "onMouseUp"==HMouseEvent.H_OM[i][1])
			{
				alert("错误:HMouseEvent\n描述:已为("+obj.H_CID+")类型的对象添加了监听!\n请不要重复添加同一前缀名的对象监听。");
				return;
			}
		}

		HMouseEvent.H_OM.push([obj,"onMouseUp"]);
	}
	
	HMouseEvent.prototype.MouseUp=function(e)
	{
		var target;
		var returnID=null;
		var targetID;
		var j=0;
		if(HMouseEvent.H_UpSPS==0)
			return;
		e?target=e.target:target=window.event.srcElement;

		HMouseEvent.DetectHistoryObject();

		if(target.id!=""){
			targetID=target.id;
			for(j=0;j<HMouseEvent.H_OM.length;j++)
			{
				if(targetID.indexOf(HMouseEvent.H_OM[j][0].H_CID)==0 && HMouseEvent.H_OM[j][1]=="onMouseUp")
				{
					returnID=HMouseEvent.H_OM[j][0].MouseUp(targetID);
					if(returnID!=null)
					{
						HMouseEvent.H_P=j;
						HMouseEvent.H_COID=returnID;
						return;
					}
					else
					{
						HMouseEvent.H_P=null;
						HMouseEvent.H_COID=null;
						return;
					}
				}
			}
		}
		else
		{
			return;
		}
	}
	
	HMouseEvent.prototype.AddMouseInputOutEventListenin=function(obj)
	{
		for(i=0;i<HMouseEvent.H_OM.length;i++)
		{
			if(obj.H_CID==HMouseEvent.H_OM[i][0].H_CID && "onMouseInputOut"==HMouseEvent.H_OM[i][1])
			{
				alert("错误:HMouseEvent\n描述:已为("+obj.H_CID+")类型的对象添加了监听!\n请不要为同一类型对象重复添加监听。");
				return;
			}
		}
		HMouseEvent.H_OM.push([obj,"onMouseInputOut"]);
	}
	
	HMouseEvent.prototype.MouseOver=function(e)
	{
		var returnID=null;
		var target;
		var j=0;
		if(HMouseEvent.H_IoSPS==0)
			return;
		e?target=e.target:target=window.event.srcElement;
		if(target.id!=""){
			targetID=target.id;
			for(j=0;j<HMouseEvent.H_OM.length;j++)
			{
				if(targetID.indexOf(HMouseEvent.H_OM[j][0].H_CID)==0 && HMouseEvent.H_OM[j][1]=="onMouseInputOut")
				{
					HMouseEvent.DetectHistoryObject();
					returnID=HMouseEvent.H_OM[j][0].MouseOver(targetID);
					if(returnID!=null)
					{
						HMouseEvent.H_P=j;
						HMouseEvent.H_COID=returnID;
						return;
					}
					else
					{
						HMouseEvent.H_P=null;
						HMouseEvent.H_COID=null;
						return;
					}
				}
			}
		}
		else
		{
			return;
		}
	}

	HMouseEvent.prototype.MouseOut=function(e)
	{
		var target;
		var j=0;
		if(HMouseEvent.H_IoSPS==0)
			return;
		e?target=e.target:target=window.event.srcElement;
		if(target.id!=""){
			targetID=target.id;
			for(j=0;j<HMouseEvent.H_OM.length;j++)
			{
				if(targetID.indexOf(HMouseEvent.H_OM[j][0].H_CID)==0 && HMouseEvent.H_OM[j][1]=="onMouseInputOut")
				{
					HMouseEvent.H_OM[j][0].MouseOut(targetID);
				}
			}
		}
		else
		{
			return;
		}
	}
	
	HMouseEvent.prototype.SetUPEventFettle=function(n)
	{
		if(n==0)
		{
			HMouseEvent.H_UpSPS=n;
		}else if(n==1){
			HMouseEvent.H_UpSPS=n;
		}else{
			alert("错误HMouseEvent:停止事件请使用0,启动事件请使用1.");
			return;
		}
	}
	
	HMouseEvent.prototype.SetIOEventFettle=function(n)
	{
		if(n==0)
		{
			HMouseEvent.H_IoSPS=n;
		}else if(n==1){
			HMouseEvent.H_IoSPS=n;
		}else{
			alert("错误HMouseEvent:停止事件请使用0,启动事件请使用1.");
			return;
		}
	}
	
	HMouseEvent.prototype.DisposalDisplay=function(id)
	{
		var k;
		for(k=0;k<HMouseEvent.H_OM.length;k++)
		{
			if(id.indexOf(HMouseEvent.H_OM[k][0].H_BID)==0)
			{
				
				HMouseEvent.H_OM[k][0].DisposalDisplay(id);
			}
		}
	}
	
	HMouseEvent.DetectHistoryObject=function()
	{
		try
		{
			if(HMouseEvent.H_COID!=null && HMouseEvent.H_P!=null){
				if(HMouseEvent.H_OM[HMouseEvent.H_P][0].DisposalDisplay(HMouseEvent.H_COID))
				{
					HMouseEvent.H_P=null;
					HMouseEvent.H_COID=null;
				}
				else
				{
					return;
				}
			}else{
				HMouseEvent.H_P=null;
				HMouseEvent.H_COID=null;
			}
		}
		catch (e)
		{
			alert("错误:HMouseEvent\n描述:事件对象模型中丢失了事件对应的对象!\n程序终止运行。");
			return;
		}
	}
	
	HMouseEvent.prototype.initialization=function()
	{
		document.onmouseup=this.MouseUp;
		document.onmouseover=this.MouseOver;
		document.onmouseout=this.MouseOut;
	}
	this.initialization();
}