var g_pg = null;
var g_cache = null;
var g_list_request = null;
var g_count_request = null;
var g_post_request = null;
var g_info_request = null;
var g_page_size = 5;
var g_offset = 0;
var g_last_post_entry = new Object();
var g_info_obj = null;
var g_target=null;
function pg_jump_handler(offset, pageSize, identity){
	comment_query(offset);
	return true;
}

function page_onload(){
	g_cache = new ETHashtable();
	g_list_request = new ETRequest();
	g_count_request = new ETRequest();
	g_post_request = new ETRequest();
	g_info_request = new ETRequest();
	g_pg = new ETPagination('comment', $('pg_bar'), pg_jump_handler);

	var srcUrl = location.href;
	var q_pos = srcUrl.indexOf('?');
	if(q_pos >= 0){
		var params = srcUrl.substring(q_pos + 1);
		//alert(params);
		var paramObj = et_param_url2obj(params);
		if(typeof paramObj.keywords != 'undefiend'){
			g_target = paramObj.info_id;
		}
		if(typeof paramObj.category != 'undefiend'){
			g_category_dashed_id = paramObj.category;
		}
	}
	//alert(g_target + ',' + g_category_dashed_id);
	var postBtn = $('comment_post_btn');
	if(postBtn){
		et_event_attach(postBtn,'click',comment_post,false);
	}
	
	comment_count();
	comment_query(0);
	info_query();
}

function comment_query(offset){
	g_offset = offset;
	if(g_cache.hasKey(offset)){
		comment_display(offset);
	}else{
		comment_query_request(offset)
	}
}

function comment_count(){
	comment_count_request();
}

function info_query(){
	info_query_request();
}

function comment_post(){
	$('comment_post_btn').disabled = true;
	et_hint_show('');
	comment_post_request();
}

function comment_query_request(offset){
	var url = '/api/?entity=Comment&method=clientQuery';
	url += '&param=offset:' + offset + ',pageSize:' + g_page_size + ',target:' + g_target;
	g_list_request.setUrl(url);
	g_list_request.setResponseHandler(comment_query_response);
	g_list_request.start();
	//et_trace(g_list_request.getUrl());
}

function comment_count_request(offset){
	var url = '/api/?entity=Comment&method=clientCount';
	url += '&param=target:' + g_target;
	g_count_request.setUrl(url);
	g_count_request.setResponseHandler(comment_count_response);
	g_count_request.start();
}

function comment_post_request(){
	var content = et_str_trim($('comment_content_txt').value);
	if(et_str_trim(content) == ''){
		alert('请填写内容');
		return;
	}
	g_last_post_entry.content = content;
	g_last_post_entry.time = (new Date().getTime() + '').substring(0,10);
	content = content.replace(/,/g,"ET_ESC_COMMA");
	var url = '/api/?entity=Comment&method=clientPost';
	url += '&param=';
	url += 'content:' + encodeURI(content) + ',target:' + g_target + ',category:' + g_category_dashed_id;
	g_post_request.setUrl(url);
	g_post_request.setResponseHandler(comment_post_response);
	g_post_request.start();
}

function info_query_request(){
	var url = '/api/?entity=Info&method=byProperty';
	url += '&param=propName:' + 'id' + ',propValue:' + g_target;
	g_info_request.setUrl(url);
	g_info_request.setResponseHandler(info_query_response);
	g_info_request.start();
	//et_trace(g_info_request.getUrl());
}

function comment_query_response(request){
	var responseText = request.responseText + '';
	//et_trace(responseText);
	if(responseText.indexOf('{') != 0){
		return;
	}
	var msgObj = et_eval(responseText);
	var paramObj = et_param_csv2obj(msgObj.param);
	var offset = paramObj['offset'];
	g_cache[offset] = msgObj.result;
	comment_display(offset);
}

function comment_count_response(request){
	var responseText = request.responseText + '';
	if(responseText.indexOf('{') != 0){
		return;
	}
	var msgObj = et_eval(responseText);
	g_total = parseInt(msgObj.result,10);
	pg_display();
}

function comment_post_response(request){
	var responseText = request.responseText + '';
	if(responseText.indexOf('{') != 0){
		return;
	}
	
	var msgObj = et_eval(responseText);
	var lastId = parseInt(msgObj.result,10);
	if(lastId + '' === 'NaN'){lastId = 0;}
	g_last_post_entry.id = lastId;
	$('comment_post_btn').disabled = false;
	$('comment_content_txt').value = '';
	comment_display_entry(g_last_post_entry);
	et_hint_show('发表成功');
}

function info_query_response(request){
	
	//et_trace('request text:' + request.responseText);
	//alert(request.responseText);
	var responseText = request.responseText + '';
	
	if(responseText.indexOf('{') != 0){
		return;
	}
	//et_trace(responseText);
	
	var msgObj = et_eval(responseText);
	g_info_obj = msgObj.result;
	
	info_display();
}

function comment_display(offset){
	if(!g_cache[offset]){
		return;
	}
	
	var html = '';
	var comment_arr = g_cache[offset];
	var listContainer = $('comment_list');
	while(listContainer.childNodes.length > 0){
		listContainer.removeChild(listContainer.firstChild);
	}
	
	for(var i = 0; i < comment_arr.length; i++){
		comment_display_entry(comment_arr[i]);
	}
}

function pg_display(){
	g_pg.setOffset(g_offset);
	g_pg.setPageSize(g_page_size);
	g_pg.setTotal(g_total);
	g_pg.refreshCounter();
	g_pg.createBar();
}

function comment_display_entry(entry){
	var html = '';
	var postTime = new Date();
	var listContainer = $('comment_list');
	while(listContainer.getElementsByTagName('li').length >= (5 * 2)){
		listContainer.removeChild(listContainer.lastChild);
		listContainer.removeChild(listContainer.lastChild);
	}
	
	postTime.setTime(parseInt(entry.time + '000',10));
	html += '<li>';
	if(entry.content){
		html += '&nbsp;&nbsp;' + et_esc_decode(entry['content']);
	}
	html += '&nbsp;&nbsp;(' + postTime.toLocaleString() + ')';
	html += '</li>';
	html += '<li><img src="/images/list_line.gif" /></li>';
	var src_html = $('comment_list').innerHTML;
	if(src_html.indexOf('<li>...</li>') >= 0){
		listContainer.innerHTML = html;
	}else{
		listContainer.innerHTML = html + src_html;
	}
}

function info_display(){
	$('info_title_span').innerHTML = g_info_obj.mainTitle;
	$('info_path_link').href = APP_ROOT + et_esc_decode(g_info_obj.path);
}
et_event_attach(window,'load',page_onload,false);