//*** This code is copyright 2003 by Gavin Kistner, gavin@refinery.com਍⼀⼀⨀⨀⨀ 䤀琀 椀猀 挀漀瘀攀爀攀搀 甀渀搀攀爀 琀栀攀 氀椀挀攀渀猀攀 瘀椀攀眀愀戀氀攀 愀琀 栀琀琀瀀㨀⼀⼀瀀栀爀漀最稀⸀渀攀琀⼀䨀匀⼀开刀攀甀猀攀䰀椀挀攀渀猀攀⸀琀砀琀ഀഀ
//*** Reuse or modification is free provided you abide by the terms of that license.਍⼀⼀⨀⨀⨀ ⠀䤀渀挀氀甀搀椀渀最 琀栀攀 昀椀爀猀琀 琀眀漀 氀椀渀攀猀 愀戀漀瘀攀 椀渀 礀漀甀爀 猀漀甀爀挀攀 挀漀搀攀 猀愀琀椀猀昀椀攀猀 琀栀攀 挀漀渀搀椀琀椀漀渀猀⸀⤀ഀഀ
਍ഀഀ
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted਍⼀⼀⨀⨀⨀攀⸀最⸀ 䄀琀琀愀挀栀䔀瘀攀渀琀⠀眀椀渀搀漀眀Ⰰ✀氀漀愀搀✀Ⰰ䴀礀䘀甀渀挀琀椀漀渀一愀洀攀圀椀琀栀漀甀琀倀愀爀攀渀琀栀攀猀椀猀Ⰰ昀愀氀猀攀⤀㬀ഀഀ
਍昀甀渀挀琀椀漀渀 䄀琀琀愀挀栀䔀瘀攀渀琀⠀漀戀樀Ⰰ攀瘀琀Ⰰ昀渀挀Ⰰ甀猀攀䌀愀瀀琀甀爀攀⤀笀ഀഀ
	if (!useCapture) useCapture=false;਍ऀ椀昀 ⠀漀戀樀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⤀笀ഀഀ
		obj.addEventListener(evt,fnc,useCapture);਍ऀऀ爀攀琀甀爀渀 琀爀甀攀㬀ഀഀ
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);਍ऀ攀氀猀攀笀ഀഀ
		MyAttachEvent(obj,evt,fnc);਍ऀऀ漀戀樀嬀✀漀渀✀⬀攀瘀琀崀㴀昀甀渀挀琀椀漀渀⠀⤀笀 䴀礀䘀椀爀攀䔀瘀攀渀琀⠀漀戀樀Ⰰ攀瘀琀⤀ 紀㬀ഀഀ
	}਍紀 ഀഀ
਍⼀⼀吀栀攀 昀漀氀氀漀眀椀渀最 愀爀攀 昀漀爀 戀爀漀眀猀攀爀猀 氀椀欀攀 一匀㐀 漀爀 䤀䔀㔀䴀愀挀 眀栀椀挀栀 搀漀渀✀琀 猀甀瀀瀀漀爀琀 攀椀琀栀攀爀ഀഀ
//attachEvent or addEventListener਍昀甀渀挀琀椀漀渀 䴀礀䄀琀琀愀挀栀䔀瘀攀渀琀⠀漀戀樀Ⰰ攀瘀琀Ⰰ昀渀挀⤀笀ഀഀ
	if (!obj.myEvents) obj.myEvents={};਍ऀ椀昀 ⠀℀漀戀樀⸀洀礀䔀瘀攀渀琀猀嬀攀瘀琀崀⤀ 漀戀樀⸀洀礀䔀瘀攀渀琀猀嬀攀瘀琀崀㴀嬀崀㬀ഀഀ
	var evts = obj.myEvents[evt];਍ऀ攀瘀琀猀嬀攀瘀琀猀⸀氀攀渀最琀栀崀㴀昀渀挀㬀ഀഀ
}਍昀甀渀挀琀椀漀渀 䴀礀䘀椀爀攀䔀瘀攀渀琀⠀漀戀樀Ⰰ攀瘀琀⤀笀ഀഀ
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;਍ऀ瘀愀爀 攀瘀琀猀 㴀 漀戀樀⸀洀礀䔀瘀攀渀琀猀嬀攀瘀琀崀㬀ഀഀ
	for (var i=0,len=evts.length;i<len;i++) evts[i]();਍紀਀