
Event.observe( window, 'load', window_onload);


var string_buffer = function() {

	var buff = [];
	
	return {
		a: function(s){
			buff.push(s);
		},
		toString: function() {
			return buff.join('');
		}
	};
};


function window_onload(evt){

	Event.observe('btn_go','click',btn_go_onclick);

	new Image().src = 'img/ajax-loader-bar.gif';
	
}


function btn_go_onclick(evt){

	if(!$('txt_site').value){
		alert('ドメイン名を入力してから、確認ボタンをクリックして下さい。');
		return;
	}

	show_loader(true);

	new Ajax.Request( 
		'ti.php',
		{ 
			method: 'POST', 
			parameters: { 
				'site_name': $('txt_site').value
			},
			onComplete: function(trans){
				show_loader(false);
										
				if( trans.responseText.search(/!-!/) != -1 ) {
					$('result').innerHTML = '<p style="color:red;">誠に恐れ入りますが、本日は大変アクセスが多いためご利用いただけません。</p>';
					return;
				}
				else{
					set_info(trans.responseText);
				}
			} 
		}
	);

}


function show_loader(b){

	if(b){
		$('result').innerHTML = '<div><p>少々お待ちください. 情報取得中です...<br><img src="img/ajax-loader-bar.gif" alt=""></p></div>';
	}
	else{
		$('result').innerHTML = '';
	}

}

function set_info(s) {

	var e = eval('(' + s + ')');
	var sb, i, d, f;

	var req = e.Response.OperationRequest;
	var res = e.Response.TrafficHistoryResult;
	var hist = res.Alexa.TrafficHistory;
	var sta = e.Response.ResponseStatus;
	
	sb = string_buffer();
	
	sb.a('<table class="basic" cellspacing="0" cellpadding="2" border="0">');
	// Header
	sb.a('<tr><th colspan="5">' + hist.Site + '</th></tr>' );
	sb.a('<tr><th rowspan="2">日付</th><th rowspan="2">ランク</th><th colspan="2">ページビュー</th><th rowspan="2">リーチ/(百万)</th></tr>');
	sb.a('<tr><th>/ (百万)</th><th>/ (ユーザー)</th></tr>');

	//alert('len=' + hist.HistoricalData.Data.length);
	
	if(hist.HistoricalData != null && hist.HistoricalData.Data != null ) {
	
		for(i=0; i<hist.HistoricalData.Data.length; i++){
		
			d = hist.HistoricalData.Data[i];
		
			sb.a('<tr>');
			sb.a('<td>' + d.Date + '</td>');
			sb.a('<td>' + d.Rank + '</td>');
			
			sb.a('<td>' + parseFloat(d.PageViews.PerMillion).toFixed(2) + '</td>');
			if(isNaN(d.PageViews.PerUser)){
				sb.a('<td>n/a</td>');
			}
			else{
				sb.a('<td>' + d.PageViews.PerUser + '</td>');
			}
			
			sb.a('<td>' + parseFloat(d.Reach.PerMillion).toFixed(2) + '</td>'); 
			sb.a('</tr>');
		}
	}

	sb.a('</table>');
	
	$('result').innerHTML = sb.toString();
}



