function CommentsModule() {
	AjaxList.apply(this, arguments); // superclass constructor
	this.autoLoadItems = false;
	this.formHandler = null;
	this.formHandlerParams = $H();
}
function CommentsModule_toggleItem(id) {
	var el = $$('#' + this.uid + '_' + id + ' .commentDetail')[0];
	if (el) {
	    if (el.style.display == 'none') el.style.display = '';
	    else el.style.display = 'none';
	}
}
function CommentsModule_toggleForm(state) {
	var el = Selector.findChildElements(this.htmlContEl, $A(['form.comment']))[0];
	if (el) {
		if (state == null) state = el.style.display == 'none';
	    if (state) {
			el.style.display = '';
			Form.focusFirstElement(el);
			Element.scrollTo(el);
		}
		else el.style.display = 'none';
	}
}
function CommentsModule_formSubmit(form) {
	if (!this._formSubmitting) {
		var formValues = Form.serialize(form, true);
		var errEl;
		var errorOccured = false;

		errEl = Selector.findChildElements(form, $A(['.name .error']))[0]
		if (formValues['author_name'].match(/^\W*$/)) {
			if (errEl) errEl.style.display = '';
			errorOccured = true;
		}
		else if (errEl) errEl.style.display = 'none';

		errEl = Selector.findChildElements(form, $A(['.email .error']))[0]
		if (!formValues['author_email'].match(/^[\w\.-]+@[\w\.-]+\.\w{2,4} *$/)) {
			if (errEl) errEl.style.display = '';
			errorOccured = true;
		}
		else if (errEl) errEl.style.display = 'none';
		
		errEl = Selector.findChildElements(form, $A(['.country .error']))[0]
		if (formValues['country'] == 'Please Select' ) {
			if (errEl) errEl.style.display = '';
			errorOccured = true;
		}
		else if (errEl) errEl.style.display = 'none';

		errEl = Selector.findChildElements(form, $A(['.commententry .error']))[0]
		if (formValues['text'].match(/^\W*$/)) {
			if (errEl) errEl.style.display = '';
			errorOccured = true;
		}
		else if (errEl) errEl.style.display = 'none';

		if (errorOccured) return false;

		new Ajax.Request(
			this.formHandler,
			{
				method: 'post',
				parameters: this.formHandlerParams.merge(formValues),
				onComplete: this.doOnFormSubmitted.bind(this),
				onFailure: this.doOnFailure.bind(this),
				onException: this.doOnException.bind(this)
			});
		this._formSubmitting = true;
	}
	return false;
}
function CommentsModule_doOnFormSubmitted(request) {
	this._formSubmitting = false;
	if (request.responseXML) {
		this._allItems.unshift(cloneDomNode(this._xmlDoc, request.responseXML.documentElement));
		this.load(false, false);
		var el = $(this.uid + '_' + request.responseXML.documentElement.getAttribute('id'));
		if (el) Element.scrollTo(el);
	}
}
Object.extend(CommentsModule.prototype, AjaxList.prototype);
CommentsModule.prototype.doOnFormSubmitted = CommentsModule_doOnFormSubmitted;
CommentsModule.prototype.formSubmit = CommentsModule_formSubmit;
CommentsModule.prototype.toggleForm = CommentsModule_toggleForm;
CommentsModule.prototype.toggleItem = CommentsModule_toggleItem;
