/**
 * イベントリスナ
 */

function FwListener()
{
	var THIS;
	
	this.action = false;
	
	// 初期化
	this.init = function()
	{
		THIS = this;
		
		if (window.addEventListener || window.attachEvent) {
			THIS.action = true;
		}
		return THIS.action;
	}
	
	// 追加
	this.add = function(elm, type, func, capture)
	{
		if (!THIS.action) {
			return false;
		}
		
		elm = fwElm(elm);
		var flag = true;
		if (typeof(capture) == 'undefined') {
			capture = false;
		}
	
		if (elm && elm.addEventListener) {
			elm.addEventListener(type, func, capture);
			
		} else if (elm && elm.attachEvent) {
			elm.attachEvent('on' + type, func);
		
		} else {
			flag = false;
		}
		return flag;
	}
	
	// 削除
	this.remove = function(elm, type, func, capture)
	{
		if (!THIS.action) {
			return false;
		}
		
		elm = fwElm(elm);
		var flag = true;
		if (typeof(capture) == 'undefined') {
			capture = false;
		}
	
		if (elm && elm.removeEventListener) {
			elm.removeEventListener(type, func, capture);
			
		} else if (elm && elm.detachEvent) {
			elm.detachEvent('on' + type, func);
			
		} else {
			flag = false;
		}
		return flag;
	}
}

var _Listener = new FwListener();

if (!_Listener.init() && typeof(fwListenerError) == 'function') {
	fwListenerError();
}
