var discussion = {
	infoPane: new cfkit_InfoPane('forum'),
	grid:new Grid(),
	pager:new Grid_Pager(),
	topicGrid:new Grid(),
	topicPager:new Grid_Pager(),
	useCaptcha:false,
	captchaLoaded:false,
	
	init:function(){
		//dojo.byId('post_comment').value = '';
		//dojo.byId('topic_comment').value = '';
		//dojo.byId('post_topicID').value = '0';
		//dojo.byId('getTopic_topicID').value = '0';
		discussion.topicGrid.init('topicGrid',5);
		discussion.topicPager.init('topicPager',discussion.topicGrid,'discussion.topicPager');
		//discussion.grid.init('discussionGrid',15);
		//discussion.pager.init('discussionGridPager',discussion.grid,'discussion.gridPager');
		discussion.newRequest('getTopic_REQUEST_ID');
		discussion.newRequest('topic_REQUEST_ID');
		discussion.newRequest('post_REQUEST_ID');
		return;
	},
	
	loadTopic:function(){
		discussion.infoPane.busy();
		dojo.xhrPost({
			form: "frmGetTopic",
			url : "/cfkit_forum/server/api.cfm",
			handleAs : "json",
			load : discussion.loadTopicOK,
			error : discussion.callbackError
		});
	},

	loadTopicOK:function(data,ioArgs){
		discussion.newRequest('getTopic_REQUEST_ID');
		
		if(data.STATUS==2 && data.TOPIC.POST.length !=0){
			discussion.topicPager.updateData(data.TOPIC.POST);
			dojo.byId('topicGridHead').innerHTML = data.TOPIC.SUBJECT;
			cfkit_util.display('new_topic',false);
			cfkit_util.display('new_post',true);
			dojo.byId('post_topicID').value = data.TOPIC.TOPICID;
			dojo.byId('getTopic_topicID').value = data.TOPIC.TOPICID;
		}else{
			cfkit_util.display('new_topic',true);
			cfkit_util.display('new_post',false);
			dojo.byId('post_topicID').value = 0;
			dojo.byId('getTopic_topicID').value = 0;
		}
		discussion.infoPane.hide();
		return;
	},	

	saveTopic:function(){
		discussion.infoPane.busy();
		dojo.xhrPost({
			form: "frmTopic",
			url : "/cfkit_forum/server/api.cfm",
			handleAs : "json",
			load : discussion.saveTopicOK,
			error : discussion.callbackError
		});
	},

	saveTopicOK:function(data,ioArgs){
		discussion.newRequest('getTopic_REQUEST_ID');
		discussion.newRequest('topic_REQUEST_ID');
		if(data.STATUS !=2){
			discussion.infoPane.msg(data.MSG.DISPLAYTXT,-1);
		}else{
			dojo.byId('post_comment').value = '';
			discussion.captchaLoaded = false;
			discussion.loadTopic();
		}
		if(data.STRACTION.AWARDED){
			cfkit_award.display(data.STRACTION);
		}
		return;
	},	

	savePost:function(){
		discussion.infoPane.busy();
		dojo.xhrPost({
			form: "frmPost",
			url : "/cfkit_forum/server/api.cfm",
			handleAs : "json",
			load : discussion.savePostOK,
			error : discussion.callbackError
		});
	},

	savePostOK:function(data,ioArgs){
		discussion.newRequest('getTopic_REQUEST_ID');
		discussion.newRequest('post_REQUEST_ID');
		if(data.STATUS !=2){
			discussion.infoPane.msg(data.MSG.DISPLAYTXT,-1);
		}else{
			dojo.byId('post_comment').value = '';
			discussion.captchaLoaded = false;
			discussion.loadTopic();
		}
		
		if(data.STRACTION.AWARDED){
			cfkit_award.display(data.STRACTION);
		}
		return;
	},	
	
	callbackError:function(data,ioArgs){
		console.log(data);
		discussion.infoPane.msg('Error Contacting Server',-1);
		return;
	},	
	
	newRequest:function(id){
		dojo.byId(id).value = cfkit_util.createGUID();
		return;
	},
	
	onCommentFocus:function(){
		if(discussion.useCaptcha && !discussion.captchaLoaded){
			discussion.loadCapture();
		}
		return;
	},
	
	loadCapture:function(){
		dojo.xhrGet({
			url : "/cfkit/server/captcha/create.cfm?format=json",
			handleAs : "json",
			load : discussion.loadCaptureOk,
			error : discussion.callbackError
		});
	},
	
	loadCaptureOk:function(data,ioArgs){
		if(data.state == 1){
			cfkit_util.display('topic_captcha',true);
			cfkit_util.display('post_captcha',true);
			dojo.byId('topic_captchaImg').src = data.captchaSrc;
			dojo.byId('topic_captchaGUID').value = data.captchaGUID;
			dojo.byId('topic_captchaCode').value = '';
			dojo.byId('post_captchaImg').src = data.captchaSrc;
			dojo.byId('post_captchaGUID').value = data.captchaGUID;
			dojo.byId('post_captchaCode').value = '';
			discussion.captchaLoaded = true;
		}else{
			discussion.captchaLoaded = false;
			alert('Error Loading Capture.');
		}
		return;
	}
} 