var currentPage;

function initData(page) {
	currentPage =  page;
	$('cha_problem').update('<img src="picture/loading_16x16.gif" alt="Loading.." /> กำลังเปลี่ยนหน้า');
	var ajaxProcess = new Ajax.Updater('cha_problem', 'list.xml.php', {
		method: 'get',
		parameters: 'page=' + page
	});
}

function initStatus() {
	var ajaxProcess = new Ajax.Request('status.xml.php', {
		method: 'get',
		onComplete: function(transport) {
			var outCome = new XMLData(transport.responseXML, 'status');
			var content = '<p><img src="/pictures/line_ch.png" style="float:left" />&nbsp;&nbsp;';
			content += 'จำนวนคำถามทั้งหมด: ' + outCome.getData(0,'problems') + ' ข้อ <br />';
			if (outCome.getData(0,'uid') == '0') {
				content += 'กรุณาเข้าสู่ระบบจึงจะสามารถตอบคำถามได้</p>';
			} else {
				content += 'จำนวนคำถามที่ตอบได้แล้ว: <strong>' + outCome.getData(0,'solved') + ' ข้อ</strong> (' + outCome.getData(0,'percent') + ' %)</p>';
			}
			$('cha_talk').update(content);
		}
	});
}

function readProblem(id) {
	var permalink = 'http://www.programming.in.th/challenge/index.php?id=' + id;
	$('cha_description').update('<img src="picture/loading_16x16.gif" alt="Loading.." /> กำลังอ่านข้อมูล');
	var ajaxProcess = new Ajax.Request('problem.xml.php', {
		method: 'get',
		parameters: 'id=' + id,
		onComplete: function(transport) {
			if (transport.responseText.length == 0) {
				$('cha_description').update('<h3>เกิดปัญหาในการอ่านข้อมูล!</h3>');
				return ;
			}
			var status = transport.responseXML.getElementsByTagName('problem')[0].getAttribute('status');
			var outCome = new XMLData(transport.responseXML, 'problem');
			$('cha_description').update();
			$('cha_description').appendChild(Builder.node('h3', ['#' + outCome.getData(0,'pid') + ': ' + outCome.getData(0,'title')]));
			$('cha_description').appendChild(Builder.node('p', Builder.node('input', {type:'text', className:'eng_input', style:'width:360px', value:permalink, onfocus:'javascript:this.select()'})));
			var des = outCome.getData(0,'description').split(/\r?\n/g);
			var dummy = Builder.node('p');
			for (var i=0; i<des.length; i++) {
				dummy.appendChild(Builder.node('span', des[i]));
				dummy.appendChild(Builder.node('br'));
			}
			//alert(desElement);
			$('cha_description').appendChild(Builder.node('p', {style:'background:#E1E8FF;color:#333;border:#009 1px dashed;padding:4px'}, dummy));
			$('cha_description').appendChild(Builder.node('p', 'จำนวนคนตอบถูก: ' + outCome.getData(0,'solved'), Builder.node('em', ' (ล่าสุดเมื่อ: ' + outCome.getData(0,'lastupdate') + ')')));
			if (status == "solved") {
				var element = Builder.node('fieldset', [
					Builder.node('legend', 'คำตอบ'),
					Builder.node('h3', outCome.getData(0,'answer'))
				]);
			} else if (status == "unsolved") {
				// FIX SIZE!!
				var element = Builder.node('form', {onsubmit:'javascript:answerProblem('+id+');return false;'},
					Builder.node('fieldset', [
						Builder.node('legend', 'คำตอบ'),
						Builder.node('textarea', {id:'txtAnswer', style:'float:left;width:250px;height:50px'}),
						Builder.node('input', {type:'submit', style:'float:left;height:50px', value:' ส่ง ', id:'btnAnswer'})
					])
				);
			} else {
				var element = Builder.node('fieldset', [
					Builder.node('legend', 'คำตอบ'),
					Builder.node('p', 'กรุณาเข้าสู่ระบบเพื่อตอบคำถาม')
				]);
			}
			$('cha_description').appendChild(element);
		}
	});
}

function answerProblem(id) {
	$('btnAnswer').disabled = true;
	var ajaxProcess = new Ajax.Request('answer.php', {
		method: 'post',
		parameters: 'id=' + id + '&ans=' + $F('txtAnswer'),
		onComplete: function(transport) {
			if (transport.responseText == 'ok') {
				alert('คำตอบถูกต้อง');
				initStatus();
				initData(currentPage);
				readProblem(id);
			} else if (transport.responseText == 'error') {
				alert('ไม่พบคำถามข้อที่ต้องการ\nกรุณาติดต่อผู้ดูแล');
			} else {
				alert('คำตอบไม่ถูกต้อง\nกรุณาลองใหม่');
				$('txtAnswer').focus();
				$('btnAnswer').disabled = false;
			}
		}
	});
}
