
//====================================================================
// jsライブラリ
// イベント関連 jslb_event.js 
// 
//
// 2005/04/16 ( Use Free 商用利用も自由です )
//--------------------------------------------------------------------
//--XMLHttpRequestオブジェクト生成関数 
// 書式 createHttpRequest()
// 例   httpoj = createHttpRequest()
// 戻値 XMLHttpRequestオブジェクトまたはnull
// http://allabout.co.jp/career/javascript/closeup/CU20030920/index.htm
//--------------------------------------------------------------------
// Toshirou Takahashi/サポート http://jsgt.org/mt/01/
//--------------------------------------------------------------------
/*

使用例:  ページ読み込み時にid="test"のDIVへonclickイベントを追加する

<script language = "JavaScript" 
        charset = "Shift_JIS"
        src     = "./jslb_ajax.js"></script>

<script language="JavaScript">
<!--

  //XMLHttpRequestオブジェクト生成
  var httpoj = createHttpRequest()
    
  function getTxtFile(fileName)
  {
    httpoj.open("GET", fileName , true );
    
    httpoj.onreadystatechange = function() 
    {
      if (httpoj.readyState==4) 
      {
        alert( httpoj.responseText )
      }
    }
  }

//-->
</script>

<form>
  <input type    = "button"
         value   = "get text file"
         onclick = "getTxtFile('test1.txt')"
</form>

*/
//--------------------------------------------------------------------



function createHttpRequest(){

	if(window.ActiveXObject){
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				return null;
	 		}
	 	}
	} else if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	} else {
		return null;
	}
}


	/**
	 * ajax_dlink(oj,url)
	 *
	 * @param id	id of element for insert
	 * @param url	load url
	 * @returns		readyState
	 */

	function ajax_dlink(oj,url)
	{
		var xhtoj = createHttpRequest()

		xhtoj.open("GET", url , true );

		xhtoj.onreadystatechange = function() 
		{
			if (xhtoj.readyState==4) 
			{
				if(chk_browser('konqueror'))
						str = utf8to16(xhtoj.responseText)
				else if(chk_browser('safari'))
						str = utf8to16(xhtoj.responseText)//dame
				else	str =  xhtoj.responseText
				document.getElementById(oj.parentNode.id).innerHTML=str
				
				//onloaded(oj.parentNode.id)
			}
		}
	
		xhtoj.send("")
	}
	
	
	function onloaded(id){}

	/**
	 * chk_browser()
	 *
	 * @param browserName	browser name
	 */

	function chk_browser(browserName)
	{
		var ua = navigator.userAgent

		switch (browserName)
		{
			case 'konqueror' :
				 return  ua.indexOf("Konqueror") != -1 ; break ;
			case 'safari' :
				 return  ua.indexOf("Safari") != -1 ; break ;

			dafault :
				return null ; break ;
		}
	}

	
	/* utf.js - UTF-8 <=> UTF-16 convertion
	 *
	 * Copyright (C) 1999 Masanao Izumo <mo@goice.co.jp>
	 * Version: 1.0
	 * LastModified: Dec 25 1999
	 * This library is free.  You can redistribute it and/or modify it.
	 */
	
	/*
	 * Interfaces:
	 * utf8 = utf16to8(utf16);
	 * utf16 = utf16to8(utf8);
	 */
	
	function utf16to8(str) {
	    var out, i, len, c;
	
	    out = "";
	    len = str.length;
	    for(i = 0; i < len; i++) {
		c = str.charCodeAt(i);
		if ((c >= 0x0001) && (c <= 0x007F)) {
		    out += str.charAt(i);
		} else if (c > 0x07FF) {
		    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
		    out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
		    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		} else {
		    out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
		    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		}
	    }
	    return out;
	}
	
	function utf8to16(str) {
	    var out, i, len, c;
	    var char2, char3;
	
	    out = "";
	    len = str.length;
	    i = 0;
	    while(i < len) {
			c = str.charCodeAt(i++);
			switch(c >> 4)
			{ 
			  case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
			    // 0xxxxxxx
			    out += str.charAt(i-1);
			    break;
			  case 12: case 13:
			    // 110x xxxx   10xx xxxx
			    char2 = str.charCodeAt(i++);
			    out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
			    break;
			  case 14:
			    // 1110 xxxx  10xx xxxx  10xx xxxx
			    char2 = str.charCodeAt(i++);
			    char3 = str.charCodeAt(i++);
			    out += String.fromCharCode(((c & 0x0F) << 12) |
							   ((char2 & 0x3F) << 6) |
							   ((char3 & 0x3F) << 0));
			    break;
			}
	    }
	
	    return out;
	}
	
