﻿// JavaScript Document

var	jsonlib2	= new function(){
	/*文字列のmethod拡張*/
	String.prototype.appTemp	= function(__json){
		/*ローカル関数定義ここから*/
		/*数値の桁取り*/
		var ketatori 				= function(num){
			if(isNaN(num)){
				return num;
			}else{
				var temp = num.toString().split('.');
					temp[0]=temp[0].toString().replace( /([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,')
				return temp.join('.');
			}
		}
		/*グローバル変数を展開*/
		var variableConv			= function(__temp,__json){
			var	str	= __temp;
			var	re	= new RegExp('##(.+?)##','ig');
			var	regStr;
			while(regStr=re.exec(__temp)){
				var	_replace_	= RegExp.$1;
				var	_needle		= new RegExp(regStr[0],'g');
				try{
					var	_replace	= eval(_replace_);
				}catch( e ){
					var	_replace	= '';
				}
				str	= str.replace(_needle,_replace)
			}
			return str;
		}
		/*JSON上の変数を展開*/
		var applicationTemplates	= function(__temp,__json,__format){
			var	str	= __temp;
			var	re	= new RegExp(__format,'ig');
			var	regStr;
			while(regStr=re.exec(__temp)){
				/*置換準備*/
				/*_needle	:: 探したい値*/
				/*_replace	:: 置き換える値*/
				var	_replace_	= RegExp.$1;
				var	_needle		= new RegExp(regStr[0].toString().replace(/\[(.+?)\]/,'\\[$1\\]'),'g');
				try{
					var	_replace	= eval('__json.'+_replace_);
				}catch( e ){
					var	_replace	= '';
				}
				if(__format == '@@,(.+?),@@') _replace=ketatori(_replace);
				/*置換処理*/
				str	= str.replace(_needle,_replace)
			}
			return str;
		}
		/*条件式に基づいてJSON上の変数を展開*/
		var applicationTemplatesIF	= function(__temp,__json){
			var	str	= __temp;
			var	re	= new RegExp('\\[\\[if\\((.+?)\\)\\{(.*?)\\}else\\{(.*?)\\}\\]\\]','ig');
			var	regStr;
			while(regStr=re.exec(__temp)){
				var	_needle	= new RegExp('\\[\\[if\\('+RegExp.$1+'\\)\\{'+RegExp.$2+'\\}else\\{'+RegExp.$3+'\\}\\]\\]','g');
				var _execution_true		= RegExp.$2;
				var _execution_false	= RegExp.$3;
				var	_expression			= RegExp.$1.replace(/this\./ig,"__json.");
				try{
					var	_replace	= (eval('__json.'+_expression))? _execution_true:_execution_false;
				}catch( e ){
					var	_replace	= _execution_false;
				}
				str	= str.replace(_needle,_replace);
			}
			return str;
		}
		/*ローカル関数定義ここまで*/
	
		/*実行部分*/
		var	mySTR	= this;
			mySTR	= variableConv(mySTR,__json);
			mySTR	= applicationTemplatesIF(mySTR,__json);
			mySTR	= applicationTemplates(mySTR,__json,'@@\\\/(.+?)\\\/@@');
			mySTR	= applicationTemplates(mySTR,__json,'@@,(.+?),@@');
		return mySTR.replace(/&lt;(.+?)&gt;/ig,'<$1>');
	};

	this.version	= '1.0.0';
	this.setJSON	= function(json,string,separator){
		var	temp		= new Array();
		var	separator	= (separator)? separator:'\n';
		for(var i in json){
			temp.push(string.appTemp(json[i]));
		}
		return temp.join(separator);
	};
	this.query		= function(queryObj){

		/*オブジェクトのクローンを作成*/
		var cloneObj = function (object){
			var tempObj = new Object();
			for (var _i in object){
				tempObj[_i] = object[_i];
			};
			return tempObj;
		};
	
		/*クエリを分解*/
		var getQUERY	= function(str,separator){
			var	_str		= str.split(separator);
			var	separator	= (separator.match(/like/i))? 'LIKE':separator;
			var	_key		= (_str[0])? _str[0].toString().replace(/^ {0,}(.*?) {0,}$/ig,"$1"):false;
			var	_value		= (_str[1])? (separator=='LIKE')? _str[1].toString().replace(/^ {0,}(.*?) {0,}$/ig,"$1").replace(/%/g,'.*?'):_str[1].toString().replace(/^ {0,}(.*?) {0,}$/ig,"$1"):false;
			return({"key":_key,"value":_value});
		};
	
		/*LIMITクエリ実行部分*/
		var	Q_LIMIT		= function(_obj,LIMIT){
			var	tempObj	= new Array();
			var	n		= new Number();
			var	s		= LIMIT[0];
			var	e		= (LIMIT[1])? LIMIT[1]:false;
			for(var _i in _obj){
				if(e||e===0){
					if((n>=s)&&(e>=n)){
					}else{
						delete _obj[_i];
					}
				}else{
					if(n>=s){
					}else{
						delete _obj[_i];
					}
				}
				n++
			};
			return	_obj;
		};
	
		/*ORDERクエリ実行部分*/
		var	Q_ORDER		= function(_obj,KEY,ORDER){
			if(ORDER){
				var	origin	= new Array();
				var	temp	= new Array();
				var	index	= new Array();
				var	n		= new Number();
				for(var i in _obj){
					temp.push({"index":n,"obj":_obj[i]});
					index[n++]	= i;
				}
				var	path	= '.obj.'+KEY;
				if(ORDER=='DESC'){
					temp.sort (
						function(b1, b2){
							var	_b1	= (isNaN(eval('b1'+path)))? eval('b1'+path):eval('b1'+path)*1;
							var	_b2	= (isNaN(eval('b2'+path)))? eval('b2'+path):eval('b2'+path)*1;
							return _b1 < _b2 ? 1 : -1;
						}
					);
				}else{
					temp.sort (
						function(b1, b2){
							var	_b1	= (isNaN(eval('b1'+path)))? eval('b1'+path):eval('b1'+path)*1;
							var	_b2	= (isNaN(eval('b2'+path)))? eval('b2'+path):eval('b2'+path)*1;
							return _b1 > _b2 ? 1 : -1;
						}
					);
				}
				for(var i in temp){
					if(isNaN(index[temp[i].index]*1)){
						origin[index[temp[i].index]]	= temp[i].obj;
					}else{
						origin.push(temp[i].obj);
					}
				}
				return origin;
			}
		};
	
		/*初期設定*/
		var	myJSON		= (queryObj.JSON)?	queryObj.JSON : new Object();
		var	logic		= (queryObj.LOGIC)?	queryObj.LOGIC : "AND";
		var	query		= (queryObj.QUERY)?	queryObj.QUERY : false;
		var	lock		= (queryObj.LOCK)?	queryObj.LOCK : false;

		var	orLogicJSON	= new Array();
		var	processJSON	= cloneObj(myJSON);
		var	_myLIMIT	= query.split('LIMIT');
		var	_myORDER	= _myLIMIT[0].split("ORDER BY");
		var	_myWHERE	= _myORDER[0].split('WHERE');

		var	myLIMIT 	= (_myLIMIT[1])? _myLIMIT[1].split(","):false;
		var	myORDER		= (_myORDER[1])? _myORDER[1].split(","):false;
		var	myWHERE		= (_myWHERE[1])? _myWHERE[1].split(logic):false;
	
		/*抽出条件適用*/
		if(myWHERE){
			for(var _i=0;myWHERE.length>_i;_i++){
				var	compare		= false;
				var	_query		= myWHERE[_i].toString().replace(/not +?like/i,'NOTLIKE').replace(/^ {0,}(.*?) {0,}$/ig,"$1");
				_query.match(/(.+?) +(.+?) +(.+)/);
				var	target		= RegExp.$1;
				var	separator	= RegExp.$2;
				var	needle		= RegExp.$3.replace(/^ {0,}(.*?) {0,}$/ig,"$1");
	
				switch (separator) {
				case 'like':
				case 'LIKE':
				case 'NOTLIKE':
					var myNeedle	= needle.replace(/%/g,'.*?');
	
					for(var _j in processJSON){
						if(lock){
							var tempJSON	= (isNaN(_j))? eval('processJSON["'+_j+'"].'+lock):eval('processJSON['+_j+'].'+lock);
							if(tempJSON){
								if(logic=='OR'){
									orLogicJSON[_j]	= processJSON[_j];
								}
								continue;
							}
						}
						try{
							var tempJSON	= (isNaN(_j))? eval('processJSON["'+_j+'"].'+target):eval('processJSON['+_j+'].'+target);
							var	re	= new RegExp('^'+myNeedle+'$','ig');
							if(tempJSON.toString().match(re)){
								if(separator=='NOTLIKE'){
									if(logic=='AND'){
										delete processJSON[_j];
									}
								}else{
									if(logic=='OR'){
										orLogicJSON[_j]	= processJSON[_j];
									}
								}
							}else{
								if(separator=='NOTLIKE'){
									if(logic=='OR'){
										orLogicJSON[_j]	= processJSON[_j];
									}
								}else{
									if(logic=='AND'){
										delete processJSON[_j];
									}
								}
							}
						}catch( e ){
							if(logic=='AND'){
								delete processJSON[_j];
							}
						}
					}
					break;
				case '==':
				case '=':
					separator	= '==';
				case '!=':
				case '<=':
				case '<':
				case '>=':
				case '>':
					for(var _j in processJSON){
						if(lock){
							var tempJSON	= (isNaN(_j))? eval('processJSON["'+_j+'"].'+lock):eval('processJSON['+_j+'].'+lock);
							if(tempJSON){
								if(logic=='OR'){
									orLogicJSON[_j]	= processJSON[_j];
								}
								continue;
							}
						}
						try{
							var	tempJSON	= (isNaN(_j))? 			eval('processJSON["'+_j+'"].'+target):eval('processJSON['+_j+'].'+target);
								tempJSON	= (isNaN(tempJSON))?	tempJSON:tempJSON*1;
							var	needle		= (isNaN(needle))?		needle:needle*1;
							if(eval('tempJSON'+separator+'needle')){
								if(logic=='OR'){
									orLogicJSON[_j]	= processJSON[_j];
								}
							}else{
								if(logic=='AND'){
									delete processJSON[_j];
								}
							}
						}catch( e ){
							if(logic=='AND'){
								delete processJSON[_j];
							}
						}
					}
					break;
				case 'between':
				case 'BETWEEN':
					for(var _j in processJSON){
						if(lock){
							var tempJSON	= (isNaN(_j))? eval('processJSON["'+_j+'"].'+lock):eval('processJSON['+_j+'].'+lock);
							if(tempJSON){
								if(logic=='OR'){
									orLogicJSON[_j]	= processJSON[_j];
								}
								continue;
							}
						}
						try{
							var	tempJSON	= (isNaN(_j))? 			eval('processJSON["'+_j+'"].'+target):eval('processJSON['+_j+'].'+target);
								tempJSON	= (isNaN(tempJSON))?	tempJSON:tempJSON*1;
							var	_needle		= needle.toString().split('&');
							var	from		= (isNaN(_needle[0]))?		_needle[0]:_needle[0]*1;
							var	to			= (isNaN(_needle[1]))?		_needle[1]:_needle[1]*1;
							if((tempJSON<=to)&&(tempJSON>=from)){
								if(logic=='OR'){
									orLogicJSON[_j]	= processJSON[_j];
								}
							}else{
								if(logic=='AND'){
									delete processJSON[_j];
								}
							}
						}catch( e ){
							if(logic=='AND'){
								delete processJSON[_j];
							}
						}
					}
					break;
				default:
					break;
				}
			}
		}else{
			orLogicJSON	= cloneObj(myJSON);
		}

		/*OR 条件時の処理*/
		if(logic=='OR'){
			processJSON	= orLogicJSON;
		}

		/*ソート適用*/
		if(myORDER){
			for(var _i=0;myORDER.length>_i;_i++){
				var _ORDER	= myORDER[_i].toString().replace(/ +/ig,' ').replace(/^ {0,}(.*?) {0,}$/ig,"$1").split(' ');
				var	ORDER	= (_ORDER[1])? _ORDER[1]:'ASC';
				processJSON	= Q_ORDER(processJSON,_ORDER[0],ORDER);
			}
		}

		/*出力範囲適用*/
		if(myLIMIT){
			processJSON	= Q_LIMIT(processJSON,myLIMIT);
		}

		return	processJSON;
	};
}

var jsonlib	= new function(){
	/*プロパティ定義*/
	this.version= '0.9.5';
	this.data	= new Object();	
	this.importArray	= new Array();

	/*メソッド定義*/
	this.createJSON	=(function(){
		return function(_name,_json){
			this[_name] = new json(_json);
		}
	})();
	
	this.checkJSON = (function(){
		var _return;
		return function(_obj){
			_return	= new String();
			_chkJson(_obj,'');
			return _return;
		}
		function _chkJson(_obj,_name){
			var __name	=(_name)? _name:'';
			for(var _i in _obj){
				var _name_	=__name+'/'+_i;
				if(typeof(_obj[_i])=='string'||typeof(_obj[_i])=='number'||typeof(_obj[_i])=='boolean'||_obj[_i]==null){
					_return	+= _name_+'/:'+_obj[_i]+'\n';
				}else if(_obj[_i][0]){
					_return	+=_name_+'[配列構造]\n';
					_chkJson(_obj[_i],_name_);
				}else{
					_chkJson(_obj[_i],_name_);
				}
			}
		}
	})();

	this.setJSON_repeat=(function(){
		var _return;
		var _num;
		// WHERE{'X = Y,X >= Y,X <= Y,X > Y,X < Y,X like Y'};
		// ORDER{'X',ASC};ORDER{'X',DESC};
		// LIMIT{0,30};
		return function(_obj,_query){
			var _WHERE=(_query.WHERE)? _query.WHERE:false;
			var _ORDER=(_query.ORDER)? _query.ORDER:false;
			var _LIMIT=(_query.LIMIT)? _query.LIMIT:false;
//			alert('_WHERE='+_WHERE+'\n_ORDER='+_ORDER+'\n_LIMIT='+_LIMIT);
			var	_temp	= Q_WHERE(_obj,_WHERE);
				_temp	= Q_ORDER(_temp,_ORDER);
				_temp	= Q_LIMIT(_temp,_LIMIT);
			
			return	_temp;
		}
	})();
	function Q_ORDER(_obj,_ORDER){
		if(_ORDER[1]){
			var	_temp	=new Array();
			for(var _i in _obj){
				_temp.push(_obj[_i]);
			}
			var	path	= '.'+_ORDER[0].toString().replace(/\//ig,'.');
			if(_ORDER[1]=='ASC'){
				_temp.sort (
					function(b1, b2){
						var	_b1	= (isNaN(eval('b1'+path)))? eval('b1'+path):eval('b1'+path)*1;
						var	_b2	= (isNaN(eval('b2'+path)))? eval('b2'+path):eval('b2'+path)*1;
						return _b1 > _b2 ? 1 : -1;
					}
				);
			}else if(_ORDER[1]=='DESC'){
				_temp.sort (
					function(b1, b2){
						var	_b1	= (isNaN(eval('b1'+path)))? eval('b1'+path):eval('b1'+path)*1;
						var	_b2	= (isNaN(eval('b2'+path)))? eval('b2'+path):eval('b2'+path)*1;
						return _b1 < _b2 ? 1 : -1;
					}
				);
			}
			var	__temp	= new Object()
			for(var _i in _temp){
				__temp[_temp[_i].CODE.MASTER]	= _temp[_i];
			}
			return __temp;
		}else{
			return _obj;
		}
	}
	function asort(b1, b2){
		return b1[key] > b2[key] ? 1 : -1;
	}
	function Q_LIMIT(_obj,_LIMIT){
		var	_num	= new Number();
		var	_temp	= new Object();
		if(_LIMIT){
			for(var _i in _obj){
				if(_num >= _LIMIT[0]&&_num <= _LIMIT[1]){
					_temp[_i]	= _obj[_i];
				}
				_num++;
			}
		}else{
			for(var _i in _obj){
				_temp[_i]	= _obj[_i];
			}
		}
		return _temp;
	}
	function Q_WHERE(_obj,_WHERE){
		var	_tempObj	= _obj;
		if(_WHERE){
			for(var _i=0; _WHERE.length>_i; _i++){
				var	__tempObj	= new Object();
				if(_WHERE[_i].match(/ like /ig)){
					var	__WHERE	= _WHERE[_i].split(' like ');
					var	_re		= (__WHERE[1].match(/^%(.+?)%$/))? '^'+RegExp.$1+'$':(__WHERE[1].match(/^%(.+?)$/))? '^'+RegExp.$1:(__WHERE[1].match(/^(.+?)%$/))? RegExp.$1+'$':__WHERE[1];
					var	re		= new RegExp(_re,"ig");
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path)){
							try{
								if(eval('_tempObj["'+_j+'"]'+path).match(re)){
									__tempObj[_j]	= _tempObj[_j];
								}
							}catch( e ){
								alert('_tempObj["'+_j+'"]'+path);
							//エラー時の処理
							}
						}
					}
				}
				if(_WHERE[_i].match(/ = /ig)){
					var	__WHERE	= _WHERE[_i].split(' = ');
					var	re		= __WHERE[1];
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path)==re){
							__tempObj[_j]	= _tempObj[_j];
						}
					}
				}
				if(_WHERE[_i].match(/ >= /ig)){
					var	__WHERE	= _WHERE[_i].split(' >= ');
					var	re		= __WHERE[1];
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path) >= re){
							__tempObj[_j]	= _tempObj[_j];
						}
					}
				}
				if(_WHERE[_i].match(/ > /ig)){
					var	__WHERE	= _WHERE[_i].split(' > ');
					var	re		= __WHERE[1];
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path) > re){
							__tempObj[_j]	= _tempObj[_j];
						}
					}
				}
				if(_WHERE[_i].match(/ <= /ig)){
					var	__WHERE	= _WHERE[_i].split(' <= ');
					var	re		= __WHERE[1];
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path) <= re){
							__tempObj[_j]	= _tempObj[_j];
						}
					}
				}
				if(_WHERE[_i].match(/ < /ig)){
					var	__WHERE	= _WHERE[_i].split(' < ');
					var	re		= __WHERE[1];
					var	path	= '.'+__WHERE[0].toString().replace(/\//ig,'.');
					for(var _j in _tempObj){
						if(eval('_tempObj["'+_j+'"]'+path) < re){
							__tempObj[_j]	= _tempObj[_j];
						}
					}
				}
				_tempObj	= __tempObj;
			}
		}else{
		}
		return _tempObj;
	}

	this.sortJSON	= (function(){
		function func(a,b){
			return (b - a);
		}
		return function(_obj,_index,_keyfield,_keyword,_type){

			/*
			_obj	JSON
			_index	ソート情報
			_keyfield	検索対象項目
			_keyword	検索キーワード
			_type		出力形式
			*/
			_num	= new Number();

			if(_index){
				if(typeof(_index)=='object'){
					var	_key	= _index.INDEX.split('/').join('.');
					var	_sort	= (_index.SORT.match(/-/))? 'reverse':'sort';
					var	_length	= (_index.LENGTH)? _index.LENGTH:'all';
				}else if(typeof(_index)=='string'){
					var	_key	=_index.split('/').join('.');
					var	_sort	= 'sort';
					var	_length	= 'all';
				}
				var	_temp	= new Array();
				var	_n	= new Number();
				var _INDEX	= new Object();
				var	__INDEX	= new Object();
				for(var _i in _obj){
					var _num	= 1000000+_n
					_temp[_n++] = eval('_obj["'+_i+'"].'+_key)+_num;
					__INDEX[eval('_obj["'+_i+'"].'+_key)+_num]=[_i]
				}
				if(_sort=='sort'){
					if(isNaN(_temp[0])){
						_temp.sort();
					}else{
						_temp.sort(func);
					}
				}else{
					if(isNaN(_temp[0])){
						_temp.sort();
						_temp.reverse();
					}else{
						_temp.sort(func);
						_temp.reverse(func);
					}
				}
				
				for(var _i=0; _temp.length>_i; _i++){
					if(_i==_length) break;
					var _id_	= __INDEX[_temp[_i]];
					_INDEX[_id_]=_obj[_id_];
				}
			}else{
				var	_INDEX	= _obj;
			}

			if(_keyfield&&_keyword){
				var	_key	= _keyfield.split('/').join('.');
				for(var _i in _INDEX){
					var	_word	= eval('_obj["'+_i+'"].'+_key);
					if(!_word.toString().match(_keyword)){
						delete _INDEX[_i];
					}
				}
			}
			return _INDEX;
		}
	})();

	this.setJSON_repet	=(function(){
		var _return;
		var _num;
		return function(_obj,_template,_index,_keyfield,_keyword,_type){
			if(_index){
				var _obj	= jsonlib.sortJSON(_obj,_index,_keyfield,_keyword,_type);
			}
			
			_num	= new Number();

			_return	= new Array();
			for(var _i in _obj){
				_return[_num++]	= jsonlib.setJSON(_obj[_i],_template);
			}

			if(_type){
				if(_type.match(/array/g)){
					return _return;
				}else{
					return _return.join(_type);
				}
			}else{
				return _return.join('');
			}
		};
	})();

	this.setJSON2=	(function(){
		var _return;
		var _JSONarray;
		var _test;
		var _Conversion;
		return function(_obj,_template,_conv){
			_Conversion	= (_conv)? true:false;
			_test		= new String();
			_JSONarray	= new Object();
			_return		= _template.replace(/\r/g,'').replace(/\n/g,'≪BR≫');
			return _return.replace(/≪BR≫/g,'\n');
		}
		function exJSON(_obj,_template){
			_template.match(/@@.+?@@/);
			
		}
	})();


	this.setJSON = (function(){
		var _return;
		var _JSONarray;
		var _test;
		var _Conversion;

		return function(_obj,_template,_conv){
			_Conversion	= (_conv)? true:false;
			_test	= new String();
			_JSONarray	= new Object();
			_return		= _template.replace(/\r/g,'').replace(/\n/g,'≪BR≫');
//			_return		= _return.replace(/\[\[.+?\{\{.+?\}\}.+?\]\]/g,'-');
			_chkJsonArray(_obj,'',_Conversion);
			_chkJson(_obj,'');
			_return	= _return.replace(/if\(@@.*?@@\,{{.*?}}\)/g,'');
			_return	= _return.replace(/if\(@@.*?@@\,{{.*?}}{{(.*?)}}\)/g,'$1');

			var	_match	= new Array();
			var _temp	= _return.match(/\[\[.+?\]\]/g);
			if(_temp){
				for(var _i=0; _temp.length>_i; _i++){
					_d = new Date();
					_temp[_i].match(/\[\[(.+?)\]\]/);
					this.importArray.push({'tag':_temp[_i],'file':RegExp.$1,'ID':'import_'+_d.getUTCSeconds()+_d.getUTCMilliseconds()+_i});

					var regex	= this.importArray[this.importArray.length-1].tag;
					var word	= '<div style="margin:0;padding:0;border:0; background-color:none; color:none;" ID="'+this.importArray[this.importArray.length-1].ID+'"></div>';
					_return	= _return.replace(regex, word);
				}
			}
			if(this.importArray){
				id	= new Array();
				for(var i in this.importArray){
					var _file	= this.importArray[i].file;
					var	_ID		= this.importArray[i].ID;
					id[i] = setTimeout("importFile('"+_file+"','"+_ID+"')", 250);
				}
			}
			return _return.replace(/≪BR≫/g,'\n');
		}
		function _chkJsonArray(_obj,_name,_realName){
			var __name		=(_name)? _name:'';
			var __realName	=(_realName)? _realName:'';
			for(var _i in _obj){
				var	_name_		= __name+'/'+_i;
				var	_realName	= __realName+'/'+_i;
					_name_		= _name_.replace(/\/\d+$/g,'');
				if(typeof(_obj[_i])=='string'||typeof(_obj[_i])=='number'||typeof(_obj[_i])=='boolean'||_obj[_i]==null){
				}else{
					if(_obj[_i][0]){
						_test+=_name_+'：'+_obj[_i].length+'\n';
						var	_regex	= new RegExp('\\[\\['+_name_+'\\/{{(.+?)}}'+_name_+'\\/\\]\\]');
						var	_temp	= _return.match(_regex);
						var	_word	= new Array();
						for(var _j=0; _obj[_i].length>_j; _j++){
							_word[_j]	= RegExp.$1.replaceAll(_name_+'/**num**',_name_+'/'+_j);
							_word[_j]	= _word[_j].replaceAll(_realName+'/**num**',_realName+'/'+_j);
						}
						_return	= _return.replace(_regex,_word.join('≪BR≫'));
					}
					_chkJsonArray(_obj[_i],_name_,_realName);
				}
			}
		}
		function _chkJson(_obj,_name){
			var __name	=(_name)? _name:'';
			for(var _i in _obj){
				var _name_	= __name+'/'+_i;
				if(typeof(_obj[_i])=='string'||typeof(_obj[_i])=='number'||typeof(_obj[_i])=='boolean'||_obj[_i]==null){
					
					var	_word	= (_obj[_i]==='0')? '0':(_obj[_i]===0)? 0:(_obj[_i])? _obj[_i]:'';
					
					_JSONarray[_name_]	= _word;
					var	_regex_String	= new RegExp('@@'+_name_+'/@@','g');
					var	_regex_HTML		= new RegExp('@＜'+_name_+'/＞@','g');
					var	_regex_kome		= new RegExp('@※'+_name_+'/※@','g');
					var	_regex_Price	= new RegExp('@,'+_name_+'/,@','g');

					var	_regex_IF		= new RegExp('if\\(@@'+_name_+'/@@,{{(.+?)}}{{(.+?)}}\\)','i');
					var	_temp_IF		= _return.match(_regex_IF);
					while(_temp_IF){
						_regex_IF		= new RegExp('if\\(@@'+_name_+'/@@,{{(.+?)}}{{(.+?)}}\\)','i');
						_temp_IF		= _return.match(_regex_IF);
						_word	= (_word=='')? false:(_word=='false')?false:_word;
						_return	= (_temp_IF&&_word)? _return.replace(_regex_IF,RegExp.$1):_return.replace(_regex_IF,RegExp.$2);
					}
		
					var	_regex_IF		= new RegExp('if\\(@@'+_name_+'/@@,{{(.+?)}}\\)','i');
					var	_temp_IF		= _return.match(_regex_IF);
					while(_temp_IF){
						_regex_IF		= new RegExp('if\\(@@'+_name_+'/@@,{{(.+?)}}\\)','i');
						_temp_IF		= _return.match(_regex_IF);
						_word	= (_word=='')? false:(_word=='false')?false:_word;
						_return	= (_temp_IF&&_word)? _return.replace(_regex_IF,RegExp.$1):_return.replace(_regex_IF,'');
					}
					if(_Conversion){
						_return	= _return.replace(_regex_String,_word);
					}else{
						_return	= _return.replace(_regex_String,_word.toString().replace(/\|/ig,'<br />'));
					}
					_return	= _return.replace(_regex_HTML,_word.toString().unescapeJson().convertHTML());
//					_return	= _return.replace(_regex_HTML,_word.toString().unescapeJson().convertHTML());
					_return	= _return.replace(_regex_Price,ketatori(_word));
					_return	= _return.replace(_regex_kome,makeAtP(_word));
				}else{
					_chkJson(_obj[_i],_name_);
				}
			}
		}
	})();

	/*ローカル関数系*/
	function json(_json){
		this.data	= _json;
	}
}


