		TopicArgument = Class.create();

		Object.extend(TopicArgument.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.topic_argument_id = obj.topic_argument_id;
					this.topic_id = obj.topic_id;
					this.user_id = obj.user_id;
					this.argument = obj.argument;
					this.position = obj.position;
					this.post_date = obj.post_date;
					this.offset = obj.offset;
				}
			},

			getTopic_argument_id: function(){
				return this.topic_argument_id;
			},
			setTopic_argument_id: function(topic_argument_id){
				this.topic_argument_id = topic_argument_id;
			},
			getTopic_id: function(){
				return this.topic_id;
			},
			setTopic_id: function(topic_id){
				this.topic_id = topic_id;
			},
			getUser_id: function(){
				return this.user_id;
			},
			setUser_id: function(user_id){
				this.user_id = user_id;
			},
			getArgument: function(){
				return this.argument;
			},
			setArgument: function(argument){
				this.argument = argument;
			},
			getPosition: function(){
				return this.position;
			},
			setPosition: function(position){
				this.position = position;
			},
			getPost_date: function(){
				return this.post_date;
			},
			setPost_date: function(post_date){
				this.post_date = post_date;
			},
			getOffset: function(){
				return this.offset;
			},
			setOffset: function(offset){
				this.offset = offset;
			}
		});//End TopicArgument.prototype

				ArgumentResponse = Class.create();

		Object.extend(ArgumentResponse.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.argument_response_id = obj.argument_response_id;
					this.topic_argument_id = obj.topic_argument_id;
					this.user_id = obj.user_id;
					this.response = obj.response;
					this.flagged = obj.flagged;
					this.response_date = obj.response_date;
					this.current_page = obj.current_page;
				}
			},

			getArgument_response_id: function(){
				return this.argument_response_id;
			},
			setArgument_response_id: function(argument_response_id){
				this.argument_response_id = argument_response_id;
			},
			getTopic_argument_id: function(){
				return this.topic_argument_id;
			},
			setTopic_argument_id: function(topic_argument_id){
				this.topic_argument_id = topic_argument_id;
			},
			getUser_id: function(){
				return this.user_id;
			},
			setUser_id: function(user_id){
				this.user_id = user_id;
			},
			getResponse: function(){
				return this.response;
			},
			setResponse: function(response){
				this.response = response;
			},
			getFlagged: function(){
				return this.flagged;
			},
			setFlagged: function(flagged){
				this.flagged = flagged;
			},
			getResponse_date: function(){
				return this.response_date;
			},
			setResponse_date: function(response_date){
				this.response_date = response_date;
			},
			getCurrent_page: function(){
				return this.current_page;
			},
			setCurrent_page: function(current_page){
				this.current_page = current_page;
			}
		});//End ArgumentResponse.prototype

			
		ArgumentController = Class.create();
		Object.extend(ArgumentController.prototype, {
		

			initialize: function(){},
			
		
			


			_getArguments: function(obj,options)
			{
				var ajaxRenderedIds = new Array();
				
				reRenderIds = options["reRenderIds"];
				callback = options["callback"];
				ajaxRendered = (options["ajaxRendered"] != null?options["ajaxRendered"]:false);
				append = (options["append"] != null?options["append"]:false);
				
				if(reRenderIds != null && options["ajaxRendered"] == null)
					ajaxRendered = true;
				
				if(ajaxRendered)
				{
					if(reRenderIds != null)
					{
						//if its not an array
						if (reRenderIds.constructor.toString().indexOf("Array") == -1)
							ajaxRenderedIds[0] = reRenderIds;
						else
							ajaxRenderedIds = reRenderIds;
					}
					else
					{
						$$('.ajaxRendered').each(
						  function(elm)
						  {
							  ajaxRenderedIds[ajaxRenderedIds.length] = elm.id;
						  });
					}
				}
				
				var onSuccess = function(transport) 
				{
					if(ajaxRendered == true) 
					{
						var response = JSON.parse(transport.responseText);
						var newHTML = response.renderedHTML;

						for (var index = 0, len = response.reRenderIds.length; index < len; ++index)
						{
							if(!append)
								$(response.reRenderIds[index]).update(newHTML[index]);
							else
								$(response.reRenderIds[index]).insert(newHTML[index]);
						}
					}
					if(callback != null)
						callback(JSON.parse(transport.responseText).result);
				
				}.bind(this);
				
					
				new Ajax.Request('/remote/remote.php', {
					parameters: { funct:"getArguments", data:JSON.stringify(obj), clazz:"ArgumentController" , ajaxRendered:JSON.stringify(ajaxRendered), reRenderIds:JSON.stringify(ajaxRenderedIds), inputs:new Hash(Form.serializeElements($$('.ajax_input'),{getHash:true})).toJSON() },
					onSuccess: onSuccess,
    				onFailure: function(){ alert('Something went wrong...') }
				});
			},
			_getArgumentResponses: function(obj,options)
			{
				var ajaxRenderedIds = new Array();
				
				reRenderIds = options["reRenderIds"];
				callback = options["callback"];
				ajaxRendered = (options["ajaxRendered"] != null?options["ajaxRendered"]:false);
				append = (options["append"] != null?options["append"]:false);
				
				if(reRenderIds != null && options["ajaxRendered"] == null)
					ajaxRendered = true;
				
				if(ajaxRendered)
				{
					if(reRenderIds != null)
					{
						//if its not an array
						if (reRenderIds.constructor.toString().indexOf("Array") == -1)
							ajaxRenderedIds[0] = reRenderIds;
						else
							ajaxRenderedIds = reRenderIds;
					}
					else
					{
						$$('.ajaxRendered').each(
						  function(elm)
						  {
							  ajaxRenderedIds[ajaxRenderedIds.length] = elm.id;
						  });
					}
				}
				
				var onSuccess = function(transport) 
				{
					if(ajaxRendered == true) 
					{
						var response = JSON.parse(transport.responseText);
						var newHTML = response.renderedHTML;

						for (var index = 0, len = response.reRenderIds.length; index < len; ++index)
						{
							if(!append)
								$(response.reRenderIds[index]).update(newHTML[index]);
							else
								$(response.reRenderIds[index]).insert(newHTML[index]);
						}
					}
					if(callback != null)
						callback(JSON.parse(transport.responseText).result);
				
				}.bind(this);
				
					
				new Ajax.Request('/remote/remote.php', {
					parameters: { funct:"getArgumentResponses", data:JSON.stringify(obj), clazz:"ArgumentController" , ajaxRendered:JSON.stringify(ajaxRendered), reRenderIds:JSON.stringify(ajaxRenderedIds), inputs:new Hash(Form.serializeElements($$('.ajax_input'),{getHash:true})).toJSON() },
					onSuccess: onSuccess,
    				onFailure: function(){ alert('Something went wrong...') }
				});
			}		});//End ArgumentController.prototype

		