var Comments = function(){
	var dialog,conn,loading,commentHolder,curr,displayPage,pageNav,totalPages,pollId;
	return {
		init : function() {
			conn=new Ext.data.Connection();
			commentHolder=Ext.get("commentHolder");
			loading=Ext.get("loading");
			curr=0;
			displayPage=Ext.get("current-page");
			pageNav=Ext.get("pageNav");
			pollId=document.getElementById("pollId").value;
			Comments.refreshState();
			Ext.get("pc-next").on("click",this.nextPage,this);
			Ext.get("pc-prev").on("click",this.prevPage,this);
			Ext.get("pc-first").on("click",this.firstPage,this);
			Ext.get("pc-last").on("click",this.lastPage,this);
		},
		refreshState : function(){
			totalPages=parseInt(document.getElementById("totalPages").value);
			if(totalPages==0) {
				curr=0;
				displayPage.update("Page 0 of 0");
				pageNav.hide();
			}
			else if(curr<totalPages) {
				pageNav.show();
				displayPage.update("Page "+(curr+1)+" of "+totalPages);
			}
			else{
				--curr;
				pageNav.show();
				Comments.loadItems();
			}
		},
		prevPage : function(e){
			if(curr>0){
				--curr;
				this.loadItems();
			}
		},
		nextPage : function(e){
			if(curr<totalPages-1){
				++curr;
				this.loadItems();
			}
		},
		firstPage : function(e){
			if(curr>0){
				curr=0;
				this.loadItems();
			}
		},
		lastPage : function(e){
			if(curr<totalPages-1){
				curr=totalPages-1;
				this.loadItems();
			}
		},
		loadItems : function(){
			commentHolder.hide();
			loading.setX(commentHolder.getX()+10);
			loading.setY(commentHolder.getY()+10);
			loading.show();
			if(conn.isLoading())conn.abort();
			conn.request({
				url:"/ajax/comments/get.aspx?rand="+Math.random()+"&id="+pollId+"&p="+curr,
				method:"get",
				scope:this,
				callback:function(options,bSuccess,response){
					try {
						if(bSuccess){
							commentHolder.update(response.responseText);
							loading.hide();
							commentHolder.show();
							Comments.refreshState();
						}
						else throw "exception";
					}
					catch(e){
						Ext.Msg.confirm('','The server encountered an error while loading comments. Try again?',
							function(btn) {if(btn=='yes')Comments.loadItems();});
					}
				}
			});
		}
};}(); 
Ext.onReady(Comments.init,Comments,true);

