﻿/**
 * Imtech JavaScript library | Behaviour functions
 * Composed 2006 by Waldek Mastykarz | Imtech ICT BS
 * All rights reserved  
 * @created		2006-11-06 09:15:00
 * @modified	2006-11-06 10:36:00
 * @version		1.1
 * 
 * CHANGES LOG:
 * 1.1		+ own namespace added   
 */

Imtech.Behaviour = {}; // set own namespace
 
/**
 * Cross-browser event listener attacher
 * @author	Waldek Mastykarz | Imtech ICT BS
 * @version	1.3 		 
 * @param		string			event: lowercase without "on"
 * @param		function		function_name without () or function() {<your function>}
 * @param		object|string	object|object's id where the event listener will be attached to; default window
 * @dependency	Imtech.isFunction
 * @dependency	Imtech.$  		 
 * @dependency	Imtech.isUndefined
 * 
 * CHANGES LOG:
 * 1.3		+ parameters recogonition 
 * 1.2		+ $() 
 * 1.1		+ obj param   		 		 		 	 
 */		 		 		 
Imtech.Behaviour.attachEvent = function(sEvent, rFunction, obj) {
	if (!Imtech.isFunction ||
		!Imtech.isFunction(Imtech.$) ||
		!Imtech.isFunction(Imtech.isUndefined) ||
		Imtech.isUndefined(sEvent) ||
		Imtech.isUndefined(rFunction))
		return false;

	// set defaults
	obj = obj || window;
	
	obj = Imtech.$(obj);
	if (!obj)
		return false;
	
	if (typeof obj.addEventListener != "undefined") {
	   obj.addEventListener(sEvent, rFunction, false);
	   return true;
	}
	else if (typeof document.addEventListener != "undefined") {
	   document.addEventListener(sEvent, rFunction, false);
	   return true;
	}
	else if (typeof obj.attachEvent != "undefined") {
	   obj.attachEvent('on' + sEvent, rFunction);
	   return true;
	}
	else
		return false;
}

/**
 * Cross-browser event listener detacher
 * @author	Waldek Mastykarz | Imtech ICT BS
 * @version	1.3 		 
 * @param		string		event: lowercase without "on"
 * @param		function		function_name without() or function() {<your function>}
 * @param		object		object|object's id where the event listener will be detached from; default window
 * @dependency	Imtech.isFunction
 * @dependency	Imtech.$
 * @dependency	Imtech.isUndefined   	 
 * 
 * CHANGES LOG:
 * 1.3		+ parameters recognition 
 * 1.2		+ $() 
 * 1.1		+ obj param  		 		 		 	 
 */		 		 		 
Imtech.Behaviour.detachEvent = function(sEvent, rFunction, obj) {
	if (!Imtech.isFunction ||
		!Imtech.isFunction(Imtech.$) ||
		!Imtech.isFunction(Imtech.isUndefined) ||
		Imtech.isUndefined(sEvent) ||
		Imtech.isUndefined(rFunction))
		return false;
		
	// set defaults
	obj = obj || window;
	
	obj = Imtech.$(obj);
	if (!obj)
		return false;
	
	if (typeof obj.removeEventListener != "undefined") {
	   obj.removeEventListener(sEvent, rFunction, false);
	   return true;
	}
	if (typeof document.removeEventListener != "undefined") {
	   document.removeEventListener(sEvent, rFunction, false);
	   return true;
	}
	else if (typeof obj.detachEvent != "undefined") {
	   obj.detachEvent('on' + sEvent, rFunction);
	   return true;
	}
	else
		return false;
}
