function fw_module_comments() {

	this.ajaxCommentForm = function(obj, chID, chCS,module,key) {
		var url = '/ajax' + fw_comments_url + '/newComment/?chID=' + chID
				+ '&chCS=' + chCS+'&module='+module+'&key='+key;
		var rep = $(obj).siblings('#commentForm:first');

		$.post(url, function(data) {
			if (fwCore.handleErrors(data)){
			rep.hide();
			rep.html(data.response);
			rep.fadeIn(400,function() { if ($.browser.msie) { this.style.removeAttribute('filter')}} );
			}
		},'json');
		$(obj).hide();
	}
	

	
	this.displayAll = function(chID,offset,obj) {
		var url = '/ajax' + fw_comments_url + '/all/?chID=' + chID+'&offset='+offset;
		var rep = $('#cholder'+chID);
		rep.html(fwCore.spinnerHtml);
		$.get(url, function(data) {
			if (fwCore.handleErrors(data)){
			rep.hide();
			rep.html(data.response);
			$(obj).remove();
			rep.fadeIn(400,function() { if ($.browser.msie) { this.style.removeAttribute('filter')}} );
			}
		},'json');
	}

	this.bbPreview = function(obj) {
		var fm = $(obj).parents('form:first');
		var rep = fm.find('.bbPreviewField:first');
		var url = '/ajax' + fw_comments_url + '/preview/';
		var prev = fm.find('.bbPreview');
		var edit = fm.find('.bbEdit');
		$.post(url, fm.serialize(), function(data) {
			if (fwCore.handleErrors(data)){
			rep.html(data.response)
			prev.show();
			var fld = fm.find('#commentBody');
			edit.hide();
			}
		},'json');
	}

	this.bbEdit = function(obj) {

		var fm = $(obj).parents('form:first');
		var rep = fm.find('.bbPreviewField');
		var prev = fm.find('.bbPreview');
		var edit = fm.find('.bbEdit');
		var fld = fm.find('#commentBody');
		edit.show();
		prev.hide();
	}

	this.commentBigger = function(obj) {
		var fm = $(obj).parents('form:first');
		var fld = fm.find('#commentBody:first');
		var hgt = fld.height();
		hgt += 200;
		fld.css('height', hgt + 'px');
	}

	this.ajaxSubmit = function(fm) {

		// alert(fm);

		var fm = $(fm);
		var myreplacement = fm.find('.alertDiv');
		var myspinner = fm.find('.spinnerDiv');
		// myreplacement.html('DONE');

		myreplacement.html('');
		myspinner.html(fwCore.spinnerHtml);

		var url = '/ajax' + fw_comments_url + '/submit/';

		$.post(url, fm.serialize(), function(data) {
		switch (data.status) {
			
			default:
				fwCore.ajaxBridge(data,myreplacement);
			break;
		
			case 'ERROR':
				myreplacement.html(data.errors);
				fm.find('.validationFieldError').removeClass(
						'validationFieldError');
				fm.find('.validationFieldWarn').removeClass(
						'validationFieldWarn');

				// SET WARN & ERROR FIELD CLASSES
				if (data.errorFields.length) {
					for ( var i = 0; i < data.errorFields.length; i++) {
						$('#' + data.errorFields[i]).addClass(
								'validationFieldError');
					}
				}
				if (data.warnFields.length) {
					for ( var i = 0; i < data.warnFields.length; i++) {
						$('#' + data.warnFields[i]).addClass(
								'validationFieldWarn');
					}
				}
				$('.captchaRefresh').click();
				fm.find('#commentVcode').val('');
				break;

			case 'OK':
				// $('#commentForm').html('done');
				$('#commentForm').html(data.response);
				break;

			case "EDITED":
				fm.replaceWith(data.response);
				break;

			}
			
			

			myspinner.html('');

		}, "json");

	}

	this.commentAdmin = function(obj, action, commentID) {

		var baseURL = '/ajax' + fw_comments_url;

		switch (action) {

		case "approve":
			var par = this.getCommentBlock(obj);
			var url = baseURL + '/approve/' + commentID + '/';
			$.post(url, function(data) {
				if (fwCore.handleErrors(data)){
				par.removeClass('unapproved');
				}
			},'json');
			break;

		case "delete":
			var par = this.getCommentBlock(obj);
			var url = baseURL + '/delete/' + commentID + '/';
			$.post(url, function(data) {
				if (fwCore.handleErrors(data)){
				par.remove();
				}
			},'json');
			break;

		case "edit":
			var par = this.getCommentBlock(obj);
			var url = baseURL + '/edit/' + commentID + '/';
			$.post(url, function(data) {
				if (fwCore.handleErrors(data)){
				par.replaceWith(data.response);
				}
			},'json');
			break;

		}

	}

	this.getCommentBlock = function(obj) {
		return $(obj).parents('.fwComment:first');
	}

}

var fw_comments = new fw_module_comments;

