/*
	Author: Stephen W. Cote
	Email: wranlon@hotmail.com
	
	Copyright 2002, All Rights Reserved.
	
	Do not copy, archive, or distribute without prior written consent of the author.
*/

_js_package("org.cote.js.dom");
org.cote.js.dom.event={
	_gevt:function(o){
		return (typeof event=="object")?event:o;
	},
	_gevt_cancel:function(o){
		(typeof o.preventDefault!="function")?(o.returnValue=false):o.preventDefault();
	},
	_gevt_dest:function(e){
/*
		var s=org.cote.js.dom.event._gevt(o);
		if(s==null){
			org.cote.js.event.api.EventFactory.log("Bad event reference","515.3",1);
			return s;
		}
*/
		return (e.relatedTarget)?e.relatedTarget:e.toElement;	
	},
	_gevt_org:function(e){
		return (e.relatedTarget)?e.relatedTarget:e.fromElement;	
	},
	_gevt_src:function(o){
		var s=org.cote.js.dom.event._gevt(o);
		if(o==null){
			org.cote.js.message.MessageService.sendMessage("Bad event reference","515.3",1);
			return o;
		}
		return (o.target)?o.target:o.srcElement;
	},


	_add_event_buffer:function(o){
		var e = "_create_handler";
	/*				if(typeof window[o.object_id] != "object") org.cote.js.dom.api(o);*/
		try{
			o[e]=function(s,r,x,l){
				var b = (typeof r=="object" && r!=null?1:0),t=this,e,h,f;
				r = (b)?r:t;
				e = "_prehandle_" + s;
				
				/* reset b to determine how the event handler retrieves the object reference*/
				b = (l?1:0);
				h = 
					"f=function(){\n"
					+ "try{\n"
					+ "var o="+ (b?'org.cote.js._application_scope.get_object(\"' + r.object_id + '\")':"this") + ";\n"
/*
					+ "if(typeof o!=\"object\")return;\no._handle_" + s + "(arguments[0]);"
*/
					+ "if(typeof o!=\"object\")return;\no._handle_" + s + ".apply(o,arguments);"
					+ "}\ncatch(e){ alert(t.object_id + \"::\" + s + \"::\" + (e.description?e.description:e.message));}\n"
					+ "}"
				;
				eval(h);
				if(!x) t[e] = f;
				return f;
			};
		}
		catch(e){
			alert("Error: " + e.description);
		}
	},
	disableMotionCapture:function(o){
		var c = org.cote.js.dom.browser.client;
		switch(c.bswitch){
			case 1:
				o.releaseCapture();
				break;
			case 2:
				document.removeEventListener("mousemove",o.onmousemove,true);
				document.removeEventListener("mouseup",o.onmouseup,true);	
				break;
		}
	},
	enableMotionCapture:function(o){
		var c = org.cote.js.dom.browser.client;
		switch(c.bswitch){
			case 1:
				o.setCapture();
				break;
			case 2:
				document.addEventListener("mousemove",o.onmousemove,true);
				document.addEventListener("mouseup",o.onmouseup,true);
				break;
		}
	},

	addEventListener:function(o,e,f,t){

		/*
			o = object
			e = event name
			f = function pointer
			b = trap
		*/
		var c = org.cote.js.dom.browser.client;
		switch(c.bswitch){
			case 1:
				o.attachEvent("on" + e,f);
				break;
			case 2:
				o.addEventListener(e,f,t);
				break;		
		}
	}
}


