/* 
	ko2.js
	Koji Ota	Nov 30, 2015
*/

var ko2 = {
	util: {
		_replacer: function(key, val) {
			return typeof val == "function" ? val.toString() : val;
		},
		_parser: function(key, val) {
			try {
				return (typeof val == "string" && val.match(/^function[\s\S]+?}$/)) ? eval('('+val+')') : val;
			} catch(e) {
				return val;
			}
		},
	},
	// オブジェクトを文字列化する
	obj2str: function(obj) {
		var str = JSON.stringify(obj, ko2.util._replacer);
		return str;
	},
	// 文字列化されたオブジェクトの内容をオブジェクトに戻す
	str2obj: function(str) {
		var body = JSON.parse(str, ko2.util._parser);
		return body;
	},
	// REST requst
	request: function(p) {
		if (typeof(p.url) == "undefined") {
			return;
		}
		if (typeof(p.method) == "undefined") {
			return;
		}
		var data = "";
		if (typeof(p.data) != "undefined") {
			data = p.data;
		}
		
		var success = function(jsonData) {};
		if (typeof(p.success) != "undefined") {
			success = p.success;
		}
		
		var error = function(jsonData) {};
		if (typeof(p.error) != "undefined") {
			error = p.error;
		}
		
		$.ajax({
			url: p.url,
			type: p.method,
			data: data,
			success: success,
			error: error
		});
	},
	// 要素操作低レベル関数
	removeChildren: function(node) {
		while(node.firstChild) node.removeChild(node.firstChild);
	}
};
