//$Rev: 14285 $
//$Date: 2008-04-07 18:47:48 -0400 (Mon, 07 Apr 2008) $
var CommentsModule;

if ($type(window['Module']) == 'class'){
	CommentsModule = new Class({
		Extends: Module, 
		options:{
		},
		initialize:function(el,options){
			this.parent(el,options);
			this.constructor.instances[this.module.id]=this;
			this.initPanel(this.module.getElement('.comments_content'));
			this.initPanel(this.module.getElement('.settings_content'));
		},
	
		defaultPanel:function(){
			return 'comments';
		} ,
	
		loadEdit:function(){
			var panel=this.getPanel('edit');
		
			CommentsModule.instances[panel.getParent().getParent().getProperty('id')].initPanel(panel);
			panel.getParent().getElement('.comments_content').addClass('manage');
			panel.getParent().getElement('.comments_content').removeClass('preview');
		
			var found=false;
			var comments=panel.getElements('.comments_comment');
			comments.each(function(comment){
				if(comment.getStyle('display')!='none')
					found=true;
			});
		
			if(panel.getElement('.nocomments'))
				panel.getElement('.nocomments').setClass('hidden',found);
		},
		loadComments:function(){
			var panel=this.getPanel('comments');
		
			CommentsModule.instances[panel.getParent().getParent().id].initPanel(panel);
			panel.getParent().getElement('.comments_content').removeClass('manage');
			panel.getParent().getElement('.comments_content').addClass('preview');
		
			var found=false;
			var comments=panel.getElements('.comments_comment');
			comments.each(function(comment){
				if(comment.getStyle('display')!='none')
					found=true;
			});
			if(panel.getElement('.nocomments'))
				panel.getElement('.nocomments').setClass('hidden',found);
		},
		initPanel:function(panel){
			if(!panel.get('initialized')){
				panel.getElements('form').each(function(form){
					if(form.getProperty('update')){
						form.adopt(new Element('input',{type:'hidden',name:'ajax',value:1}));
						form.addEvent('submit',this.formHandler.bindWithEvent(this,form));
					}
				},this);
			
				var linkhandler=function(a){
					a.addEvent('click',function(event){
						new Request({
							url:a.getProperty('href')+'&ajax=1',
							onSuccess:function(response){
								panel.set('html',response);
								panel.erase('initialized');
								if(panel.hasClass('manage'))
									this.loadEdit();
								else this.loadComments();
							}.bind(this)
						}).send();
						return false;
					}.bindWithEvent(this));
				};
			
				panel.getElements('a.viewall').each(linkhandler,this);
				panel.getElements('.comment_controls').each(function(controls){
					controls.getElements('a').each(linkhandler,this);
				},this);
			
				if(panel.getElement('#pendingcomments') && panel.getElement('#pendingcomments').get('value') > 0){
					var value = panel.getElement('#pendingcomments').get('value');
					this.setFeedback('tab:message','edit','('+value+' new comment'+((value>1)?'s':'')+')');
				}
			
				panel.set('initialized','initialized');
			}
		},
		formHandler : function(event,form){
			event.stop();
			var update = form.getProperty('update');
			this.setFeedback('save:start',this.module.getElement('.feedback'));
			form.set('send',{
				onComplete:function(response){
					this.setFeedback('save:done',this.module.getElement('.feedback'));
					var result=this.module.getElement('.'+update);
					result.set('html',response);
					result.erase('initialized');
					if(result.hasClass('manage'))
						this.loadEdit();
					else this.loadComments();
				
				}.bind(this)
			});
			form.send();
		}
	
	});
	$extend(CommentsModule,{ //static methods
		instances:{}	
	});
}