var Ninja_ajax_class = function(url){
	this.xmlObj		= {};
	this.readFlag	= 0;
	this.method		= 'POST';
	this.request	= [];
	this.url		= url;
};
Ninja_ajax_class.prototype= {
	send : function () {
		this.readFlag = 1;
		if (this.getXMLObj() == -1) {
			alert('ご使用のブラウザでは正常に動作しません。');
			return;
		}

		this.xmlObj.onreadystatechange = this.resCheck;
		this.xmlObj.open(this.method, this.url, true);
		if (this.method == 'POST') {
			this.xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		}
		this.xmlObj.send(this.getRequest());
	},
	setURL : function(url) {
		this.url = url;
	},
	setRequest : function(key, value) {
		this.request[key] = value;
	},
	getRequest : function() {
		var tmp = [];
		for ( var key in this.request) {
			tmp[tmp.length] = key + '=' + this.request[key];
		}
		return tmp.join('&');
	},
	getXMLObj : function() {
		if ((n = navigator.userAgent.search('Opera')) != -1) {
			if (parseInt(navigator.userAgent.slice(n + 6)) < 8) {
				return -1;
			}
		}

		if (window.XMLHttpRequest) {
			this.xmlObj = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			try {
				this.xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				this.xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			return -1;
		}
	},
	resCheck : function (index) {
		var n = 5;
		if (Ninja_ajax.xmlObj.readyState == 4) {
			if (str = Ninja_ajax.getResponse()) {
				Ninja_ajax.setResult(str);
			} else {
				alert('値が正常に取得できませんでした。');
			}
		}
	},
	getResponse : function () {
		var error_txt = '';
		switch(this.xmlObj.status) {
			case 200:
				try {
					var c = decodeURIComponent(this.xmlObj.responseText);
				} catch(e) {
					//alert(this.xmlObj.responseText);
				}
			break;
			case 302:
				error_txt = 'URLにアクセスしましたがリダイレクトされました';
			break;
			case 304:
				error_txt = 'URLにアクセスしましたがリダイレクトされました';
			break;
			case 403:
				error_txt = 'Pgae Forbidden';
			break;
			case 404:
				error_txt = 'Page not found';
			break;
			case 500:
				error_txt = 'Page Internal server error';
			break;
			default:
				error_txt = '不明なHTTPエラーです';
			break;
		}

		if (error_txt) {
			c = 'error::' + error_txt;
		}

		if (c.match(/^error::/)) {
			var errorArr = c.split("::");
			alert(errorArr[1]);
			return;
		}
		return c;
	},
	setResult : function(str) {
		try {
			eval(str);
		} catch(e) {
			alert('データの取得に失敗しました。\n\n\n' + str);
		}

		for (var s in c) {
			if(typeof(c[s]) == 'string') {
				c[s] = c[s].replace(/\\n/g,"\n");
			}
		}

		try {
			eval(c.func);
		} catch(e) {
		}
	}
};

var Ninja_ajax = new Ninja_ajax_class();