var discussion = {
	infoPane: new cfkit_InfoPane('cfkit'),
	grid:new Grid(),
	pager:new Grid_Pager(),
	topicGrid:new Grid(),
	topicPager:new Grid_Pager(),
	useCaptcha:false,
	captchaLoaded:false,
	isNewTopic:true,
	
	init:function(){
		discussion.topicGrid.init('topicGrid',5);
		discussion.topicPager.init('topicPager',discussion.topicGrid,'discussion.topicPager');
		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);
			discussion.isNewTopic = false;
			dojo.byId('topicGridHead').innerHTML = data.TOPIC.SUBJECT;
			dojo.byId('post_topicID').value = data.TOPIC.TOPICID;
			dojo.byId('getTopic_topicID').value = data.TOPIC.TOPICID;
		}else{
			discussion.isNewTopic = true;
			dojo.byId('post_topicID').value = 0;
			dojo.byId('getTopic_topicID').value = 0;
		}
		discussion.drawComposer();
		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){
		var callback;
		discussion.newRequest('getTopic_REQUEST_ID');
		discussion.newRequest('post_REQUEST_ID');
		if(data.STATUS === 2){
			dojo.byId('post_comment').value = '';
			discussion.captchaLoaded = false;
			discussion.loadTopic();			
		}else{
			callback = function(){
				discussion.openComposer();
				return;
			}
			discussion.infoPane.msg(data.MSG.DISPLAYTXT,undefined,callback,true);
		}
		
		if(data.STRACTION.AWARDED){
			cfkit_award.display(data.STRACTION);
		}
		return;
	},	

	removePost:function(postID){
		discussion.infoPane.busy();
		dojo.xhrPost({
			url : "/cfkit_forum/server/api.cfm",
			handleAs : "json",
			load : discussion.removePostOK,
			error : discussion.callbackError,
			content: {	'REQUEST_ID':cfkit_util.createGUID(),
						'METHOD':'POST_REMOVE',
						'POSTID':postID
					}
		});
	},

	removePostOK:function(data,ioArgs){
		var callback;
		if(data.STATUS === 2){
			callback = function(){
				discussion.loadTopic();
				return;
			}
			discussion.infoPane.msg(data.MSG.DISPLAYTXT,undefined,callback,true);		
		}else{
			discussion.infoPane.msg(data.MSG.DISPLAYTXT);
		}
		
		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;
	},
	
	drawComposer:function(){
		if(discussion.isNewTopic){
			cfkit_util.display('wall_new_topic',true);
			cfkit_util.display('wall_new_post',false);
			cfkit_util.display('wall_topic_list',false);
		}else{
			cfkit_util.display('wall_new_topic',false);
			cfkit_util.display('wall_new_post',false);
			cfkit_util.display('wall_topic_list',true);
		}
		return;
	},
	
	openComposer:function(){
		discussion.drawComposer();
		cfkit_util.display('wall_new_post',true);
		dojo.byId('post_comment').focus();
		return;
	},
	
	closeComposer:function(){
		cfkit_util.display('wall_new_post',false);
		return;
	}
} 
