//XMLHttpRequestオブジェクト生成
function createHttpRequest() {
	//Win ie用
	if(window.ActiveXObject) {
		try {
			//MSXML2以降用
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				//旧MSXML用
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				return null;
			}
		}
	} else if(window.XMLHttpRequest) {
		//Win ie以外のXMLHttpRequestオブジェクト実装ブラウザ用
		return new XMLHttpRequest();
	} else {
		return null;
	}
}

//ファイルにアクセスし受信内容を確認
//引数 fileName:CGIのURL idID:自動生成ID loop:ループ制御フラグ
function requestHTML( fileName , idID , loop ) {

	//CGIのURLからHTML用のURLを生成
	var htmlName = fileName.replace(/,/g,"");
	    htmlName = htmlName.replace(/\&.*/g,"");
	    htmlName = htmlName.replace("aws_frame.cgi?d=","htmltmp\/") + ".html";

	//10個のCGIにランダムでアクセスさせる
	var balancer = Math.floor(Math.random() * 9);
	    fileName = fileName.replace("aws_frame.cgi","aws_frame_" + balancer + ".cgi");


	//50000分の１でCGIにアクセス
	var toCGI = Math.floor(Math.random() * 50000);
	if ( toCGI == 1 ) {
		requestCGI( fileName , idID );
	}

	//XMLHttpRequestオブジェクト生成
	var httpoj = createHttpRequest();

	//受信時に起動するイベント
	httpoj.onreadystatechange = function()
	{
		//readyState値は4で受信完了
		if ((httpoj.readyState == 4) && (httpoj.status == 200)) {
			//レスポンスを取得して出力
			document.getElementById( idID ).innerHTML = httpoj.responseText;
		}else if ((httpoj.readyState == 4) && (httpoj.status == 404)) {
			//404エラーの場合キャッシュがないのでCGIへ
			requestCGI( fileName , idID );
		}else if ((httpoj.readyState == 4) && (httpoj.status == 503)) {
			//503エラーの場合は1秒まって一度だけリトライ(廃止）
			//if (loop == 1) {
				document.getElementById( idID ).innerHTML = "<b>503 error</b>";
			//}else{
			//	waitTime( 1 );//1秒待つ
			//	requestHTML( fileName , idID , 1 );
			//}
		}else{
			document.getElementById( idID ).innerHTML = "<b>Loading...</b>";
		}
	}

	//open メソッド
	httpoj.open( "GET" , htmlName , true );
	//send メソッド
	httpoj.send( null );
}

function requestCGI( fileName , idID , loop ) {
	//XMLHttpRequestオブジェクト生成
	var httpoj = createHttpRequest();
	
	//受信時に起動するイベント
	httpoj.onreadystatechange = function()
	{
		//readyState値は4で受信完了
		if ((httpoj.readyState == 4) && (httpoj.status == 200)) {
			//レスポンスを取得して出力
			document.getElementById( idID ).innerHTML = httpoj.responseText;
		}else if ((httpoj.readyState == 4) && (httpoj.status == 503)) {
			//503エラーの場合は1秒まって一度だけリトライ(廃止)
			//if (loop == 1) {
				document.getElementById( idID ).innerHTML = "<b>503 error</b>";
			//}else{
			//	waitTime( 1 );//1秒待つ
			//	requestCGI( fileName , idID , 1 );
			//}
		}else{
			document.getElementById( idID ).innerHTML = "<b>Loading...</b>";
		}
	}

	//open メソッド
	httpoj.open( "GET" , fileName , true );
	//send メソッド
	httpoj.send( null );
}

//n桁のランダムな文字列を作成
//引数 n:生成する桁数 //戻り値 r:生成文字列
function createID( n ){
	var CODE_TABLE = "0123456789"
		+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		+ "abcdefghijklmnopqrstuvwxyz";
	var r = "";
	for (var i = 0, k = CODE_TABLE.length; i < n; i++)
		r += CODE_TABLE.charAt(Math.floor(k * Math.random()));
	return r;
}

//指定秒だけウェイトをかける
//引数 n:指定待ち時間(秒)
function waitTime( n ){
	var d1 = new Date().getTime();
	var d2 = new Date().getTime();
	while( d2 < d1+1000*1 ){	//1秒待つ
		d2 = new Date().getTime();
	}
}


