Index: branches/dev/html/js/json.js
===================================================================
--- branches/dev/html/js/json.js	(revision 12948)
+++ branches/dev/html/js/json.js	(revision 12948)
@@ -0,0 +1,210 @@
+//==============================================================================
+//  SYSTEM      :  »ÃÄêÈÇ¥¯¥í¥¹¥Ö¥é¥¦¥¶AjaxÍÑ¥é¥¤¥Ö¥é¥ê
+//  PROGRAM     :  XMLHttpRequest¤Ë¤è¤ëÁ÷¼õ¿®¤ò¹Ô¤¤¤Þ¤¹
+//  AUTHER      :  Toshirou Takahashi http://jsgt.org/mt/01/
+
+
+	////
+	// Æ°ºî²ÄÇ½¤Ê¥Ö¥é¥¦¥¶È½Äê
+	//
+	// @sample        if(chkAjaBrowser()){ location.href='nonajax.htm' }
+	// @sample        oj = new chkAjaBrowser();if(oj.bw.safari){ /* Safari code */ }
+	// @return        ¥é¥¤¥Ö¥é¥ê¤¬Æ°ºî²ÄÇ½¤Ê¥Ö¥é¥¦¥¶¤À¤±true  true|false
+	//
+	//  Enable list (v038¸½ºß)
+	//   WinIE 5.5+ 
+	//   Konqueror 3.3+
+	//   AppleWebKit·Ï(Safari,OmniWeb,Shiira) 124+ 
+	//   Mozilla·Ï(Firefox,Netscape,Galeon,Epiphany,K-Meleon,Sylera) 20011128+ 
+	//   Opera 8+ 
+	//
+	
+	function chkAjaBrowser()
+	{
+		var a,ua = navigator.userAgent;
+		this.bw= { 
+		  safari    : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0].split('.')[0]:0)>=124 ,
+		  konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
+		  mozes     : ((a=ua.split('Gecko/')[1])?a.split(' ')[0]:0) >= 20011128 ,
+		  opera     : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
+		  msie      : (!!window.ActiveXObject)?(!!createHttpRequest()):false 
+		}
+		return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)
+	}
+
+	////
+	// XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®
+	//
+	// @sample        oj = createHttpRequest()
+	// @return        XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥È(¥¤¥ó¥¹¥¿¥ó¥¹)
+	//
+	function createHttpRequest()
+	{
+		if(window.XMLHttpRequest){
+			 //Win Mac Linux m1,f1,o8 Mac s1 Linux k3 & Win e7ÍÑ
+			return new XMLHttpRequest() ;
+		} else if(window.ActiveXObject){
+			 //Win e4,e5,e6ÍÑ
+			try {
+				return new ActiveXObject('Msxml2.XMLHTTP') ;
+			} catch (e) {
+				try {
+					return new ActiveXObject('Microsoft.XMLHTTP') ;
+				} catch (e2) {
+					return null ;
+	 			}
+	 		}
+		} else  {
+			return null ;
+		}
+	}
+	
+	////
+	// Á÷¼õ¿®´Ø¿ô
+	//
+	// @sample         sendRequest(onloaded,'&prog=1','POST','./about2.php',true,true)
+	// @sample         sendRequest(onloaded,{name:taro,id:123,sel:1},','POST','./about3.php',true,true)
+	// @sample         sendRequest({onload:loaded,onbeforsetheader:sethead},'',','POST','./about3.php',true,true)
+	// @param {string} callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ôÌ¾ 
+	// @param {object} callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ôÌ¾¤È¥Ø¥Ã¥À»ØÄê´Ø¿ôÌ¾{onload:´Ø¿ôÌ¾,onbeforsetheader:´Ø¿ôÌ¾} 
+	// @param {array}  callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ôÌ¾¤È¥Ø¥Ã¥À»ØÄê ary['onload']=´Ø¿ôÌ¾;ary['onbeforsetheader']=´Ø¿ôÌ¾ 
+	// @see                    http://jsgt.org/ajax/ref/head_test/header/Range/004/sample.htm
+	// @param {string} data	   Á÷¿®¤¹¤ë¥Ç¡¼¥¿ string¤Î¾ì¹ç(&Ì¾Á°1=ÃÍ1&Ì¾Á°2=ÃÍ2...)
+	// @param {object} data	   Á÷¿®¤¹¤ë¥Ç¡¼¥¿ object¤Î¾ì¹ç{Ì¾Á°1:ÃÍ1,Ì¾Á°2:ÃÍ2,...}
+	// @param {array}  data	   Á÷¿®¤¹¤ë¥Ç¡¼¥¿ array¤Î¾ì¹ç¤ÏÏ¢ÁÛÇÛÎó ary['Ì¾Á°1']=ÃÍ1;ary['Ì¾Á°2']=ÃÍ2
+	// @param {string}method   'POST' or 'GET'
+	// @param {string}url      ¥ê¥¯¥¨¥¹¥È¤¹¤ë¥Õ¥¡¥¤¥ë¤ÎURL
+	// @param {string}async	   ÈóÆ±´ü¤Ê¤étrue Æ±´ü¤Ê¤éfalse
+	// @param {string}sload	   ¥¹¡¼¥Ñ¡¼¥í¡¼¥É true¤Ç¶¯À©¡¢¾ÊÎ¬¤Þ¤¿¤Ïfalse¤Ç¥Ç¥Õ¥©¥ë¥È
+	// @param {string}user	   Ç§¾Ú¥Ú¡¼¥¸ÍÑ¥æ¡¼¥¶¡¼Ì¾
+	// @param {string}password Ç§¾Ú¥Ú¡¼¥¸ÍÑ¥Ñ¥¹¥ï¡¼¥É
+	//
+	sendRequest.README	 = {
+		url		: 'http://jsgt.org/ajax/ref/lib/ref.htm',
+		name	: 'sendRequest', 
+		version	: 0.51, 
+		license	: 'Public Domain',
+		author	: 'Toshiro Takahashi http://jsgt.org/mt/01/',memo:''
+	};
+	function sendRequest(callback,data,method,url,async,sload,user,password)
+	{
+		//XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®
+		var oj = createHttpRequest();
+		if( oj == null ) return null;
+		
+		//¶¯À©¥í¡¼¥É¤ÎÀßÄê
+		var sload = (!!sendRequest.arguments[5])?sload:false;
+		if(sload || method.toUpperCase() == 'GET')url += '?';
+		if(sload)url=url+'t='+(new Date()).getTime();
+		
+		//¥Ö¥é¥¦¥¶È½Äê
+		var bwoj = new chkAjaBrowser();
+		var opera	  = bwoj.bw.opera;
+		var safari	  = bwoj.bw.safari;
+		var konqueror = bwoj.bw.konqueror;
+		var mozes	  = bwoj.bw.mozes ;
+				
+		//callback¤òÊ¬²ò
+		//{onload:xxxx,onbeforsetheader:xxx}
+		if(typeof callback=='object'){
+			var callback_onload = callback.onload;
+			var callback_onbeforsetheader = callback.onbeforsetheader;
+		} else {
+			var callback_onload = callback;
+			var callback_onbeforsetheader = null;
+		}
+
+		//¼õ¿®½èÍý
+		//opera¤Ïonreadystatechange¤ËÂ¿½Å¥ì¥¹¥Ð¥°¤¬¤¢¤ë¤Î¤Çonload¤¬°ÂÁ´
+		//Moz,FireFox¤Ïoj.readyState==3¤Ç¤â¼õ¿®¤¹¤ë¤Î¤ÇÄÌ¾ï¤Ïonload¤¬°ÂÁ´
+		//Win ie¤Ç¤Ïonload¤ÏÆ°ºî¤·¤Ê¤¤
+		//Konqueror¤Ïonload¤¬ÉÔ°ÂÄê
+		//»²¹Íhttp://jsgt.org/ajax/ref/test/response/responsetext/try1.php
+		if(opera || safari || mozes){
+			oj.onload = function () { callback_onload(oj); }
+		} else {
+		
+			oj.onreadystatechange =function () 
+			{
+				if ( oj.readyState == 4 ){
+					//alert(oj.status+'--'+oj.getAllResponseHeaders());
+					callback_onload(oj);
+				}
+			}
+		}
+
+		//URL¥¨¥ó¥³¡¼¥É
+		data = uriEncode(data,url);
+		if(method.toUpperCase() == 'GET') {
+			url += data
+		}
+		
+		//open ¥á¥½¥Ã¥É
+		oj.open(method,url,async,user,password);
+
+		
+		//¥ê¥¯¥¨¥¹¥È¥Ø¥Ã¥À¥«¥¹¥¿¥Þ¥¤¥ºÍÑ¥³¡¼¥ë¥Ð¥Ã¥¯
+		//»È¤¦¾ì¹ç¤Ï¡¢¸Æ¤Ó½Ð¤·HTMLÂ¦¤ÎwindowÄ¾²¼¤Ø¥°¥í¡¼¥Ð¥ë¤Ê´Ø¿ôsetHeaders¤ò
+		//µ­½Ò¤·¡¢¤½¤ÎÃæ¤ÇsetRequestHeader()¤ò¥»¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤
+		//@sample function setHeaders(oj){oj.setRequestHeader('Content-Type',contentTypeUrlenc)}
+		//
+		if(!!callback_onbeforsetheader)callback_onbeforsetheader(oj);
+
+		//¥Ç¥Õ¥©¥ë¥È¥Ø¥Ã¥Àapplication/x-www-form-urlencoded¥»¥Ã¥È
+		setEncHeader(oj);
+		
+		
+		//¥Ç¥Ð¥Ã¥¯
+		//alert('////jslb_ajaxxx.js//// \n data:'+data+' \n method:'+method+' \n url:'+url+' \n async:'+async);
+		
+		//send ¥á¥½¥Ã¥É
+		oj.send(data);
+
+		//URI¥¨¥ó¥³¡¼¥É¥Ø¥Ã¥À¥»¥Ã¥È
+		function setEncHeader(oj){
+	
+			//¥Ø¥Ã¥Àapplication/x-www-form-urlencoded¥»¥Ã¥È
+			// @see  http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.3
+			// @see  #h-17.3
+			//   ( enctype ¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 'application/x-www-form-urlencoded')
+			//   h-17.3¤Ë¤è¤ê¡¢POST/GETÌä¤ï¤ºÀßÄê
+			//   POST¤Ç'multipart/form-data'¤ò»ØÄê¤¹¤ëÉ¬Í×¤¬¤¢¤ë¾ì¹ç¤Ï¥«¥¹¥¿¥Þ¥¤¥º¤·¤Æ¤¯¤À¤µ¤¤¡£
+			//
+			//  ¤³¤Î¥á¥½¥Ã¥É¤¬Win Opera8.0¤Ç¥¨¥é¡¼¤Ë¤Ê¤Ã¤¿¤Î¤ÇÊ¬´ô(8.01¤ÏOK)
+			var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
+			if(!window.opera){
+				oj.setRequestHeader('Content-Type',contentTypeUrlenc);
+			} else {
+				if((typeof oj.setRequestHeader) == 'function')
+					oj.setRequestHeader('Content-Type',contentTypeUrlenc);
+			}	
+			return oj
+		}
+
+		//URL¥¨¥ó¥³¡¼¥É
+		//°ú¿ôdata¤Ï¡¢string¤«object¤ÇÅÏ¤»¤Þ¤¹
+		function uriEncode(data,url){
+			var encdata =(url.indexOf('?')==-1)?'?dmy':'';
+			if(typeof data=='object'){
+				for(var i in data)
+					encdata+='&'+encodeURIComponent(i)+'='+encodeURIComponent(data[i]);
+			} else if(typeof data=='string'){
+				if(data=='')return '';
+				//&¤È=¤Ç°ìÃ¶Ê¬²ò¤·encode
+				var encdata = '';
+				var datas = data.split('&');
+				for(var i=1;i<datas.length;i++)
+				{
+					var dataq = datas[i].split('=');
+					encdata += '&'+encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
+				}
+			} 
+			return encdata;
+		}
+
+		return oj
+	}
+
+function test(data){
+	alert(data.responseText);
+}
