//--------------------------NTEvent--------------------------------------//
var NTEvent = function(){};

NTEvent.observers = [];

NTEvent.add = function(element, name, observer, useCapture){
	var element = $(element);
	useCapture = useCapture || false;
	if (name == 'keypress' && (navigator.appVersion.match(/Konqueror|Safari|KHTML/)	|| element.attachEvent)){
		name = 'keydown';
	}
	var hundler = function(e){
		if(!e){
			e=window.event;
		}
		if(e&&!e.target){
			e.target=e.srcElement;
		}
		observer.call(element,e);
	};
	this._observeAndCache(element, name, hundler, useCapture);
};

NTEvent._observeAndCache = function(element, name, observer, useCapture) {
	if (!this.observers){
		this.observers = [];
	}

	// イベント登録
	if (element.addEventListener) {
		this.observers.push([element, name, observer, useCapture]);
		element.addEventListener(name, observer, useCapture);
	} else if (element.attachEvent) {
		this.observers.push([element, name, observer, useCapture]);
		element.attachEvent('on' + name, observer);
	}
};

NTEvent.unloadCache = function() {
	if (!NTEvent.observers){
		return;
	}
	for (var i = 0; i < NTEvent.observers.length; i++){
		NTEvent.stopObserving.apply(this, NTEvent.observers[i]);
		NTEvent.observers[i][0] = null;
	}
	NTEvent.observers = false;
};

NTEvent.remove = function(element, name){
	if (!NTEvent.observers){
		return;
	}
	
	var newObservers = [];
	for (var i = 0; i < NTEvent.observers.length; i++){
		if(NTEvent.observers[i][0] == element && (!name || (name && NTEvent.observers[i][1] == name))){
			NTEvent.stopObserving.apply(this, NTEvent.observers[i]);
			NTEvent.observers[i][0] = null;
		}else{
			newObservers[newObservers.length] = NTEvent.observers[i];
		}
	}
	
	NTEvent.observers = newObservers;
};

NTEvent.stopObserving = function(element, name, observer, useCapture) {
	var element = $(element);
	useCapture = useCapture || false;

	if (name == 'keypress' && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.detachEvent)){
	  name = 'keydown';
	}
	
	if (element.removeEventListener) {
		element.removeEventListener(name, observer, useCapture);
	} else if (element.detachEvent) {
		element.detachEvent('on' + name, observer);
	}
}

NTEvent.add(window, 'unload', NTEvent.unloadCache);


//--------------------------NTUserAgent--------------------------------------//

var NTUserAgent = function(){}
NTUserAgent.type="";
NTUserAgent.version="";
NTUserAgent.os="";
NTUserAgent.subtype="";

(function(){

var type=0;
var version=0;
var subtype=null;
var os=null;
var ua=navigator.userAgent.toLowerCase();
if(ua.indexOf("opera")!=-1){
	type=4;
	version=9;
	if(ua.indexOf("opera/7")!=-1||ua.indexOf("opera 7")!=-1){
		version=7;
	}else if(ua.indexOf("opera/8")!=-1||ua.indexOf("opera 8")!=-1){
		version=8;
	}
}else if(ua.indexOf("msie")!=-1&&document.all){
	type=1;
	version=6;
	if(ua.indexOf("msie 5")!=-1){
		version=5;
	}
}else if(ua.indexOf("safari")!=-1){
	type=3;
}else if(ua.indexOf("mozilla")!=-1){
	type=2;
	if(ua.indexOf("firefox")!=-1){
		subtype=1;
		version=1.5;
		if(ua.indexOf("firefox/1.0")!=-1){
			version=1.0;
		}
	}else if(ua.indexOf("netscape")!=-1){
		subtype=2;
	}else if(ua.indexOf("seamonkey")!=-1){
		subtype=4;
	}else{
		subtype=3;
		version=1.8;
		if(ua.indexOf("rv:1.7")!=-1){
			version=1.7;
		}
	}
}
if(ua.indexOf("x11;")!=-1){
	os=1;
}else if(ua.indexOf("macintosh")!=-1){
	os=2;
}
NTUserAgent.type=type;
NTUserAgent.version=version;
NTUserAgent.os=os;
NTUserAgent.subtype=subtype;

})();






