		UserTopic = Class.create();

		Object.extend(UserTopic.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.topic_id = obj.topic_id;
					this.title = obj.title;
					this.channel_id = obj.channel_id;
					this.channel_name = obj.channel_name;
					this.post_date = obj.post_date;
					this.num_arguments = obj.num_arguments;
					this.views = obj.views;
					this.current_page = obj.current_page;
				}
			},

			getTopic_id: function(){
				return this.topic_id;
			},
			setTopic_id: function(topic_id){
				this.topic_id = topic_id;
			},
			getTitle: function(){
				return this.title;
			},
			setTitle: function(title){
				this.title = title;
			},
			getChannel_id: function(){
				return this.channel_id;
			},
			setChannel_id: function(channel_id){
				this.channel_id = channel_id;
			},
			getChannel_name: function(){
				return this.channel_name;
			},
			setChannel_name: function(channel_name){
				this.channel_name = channel_name;
			},
			getPost_date: function(){
				return this.post_date;
			},
			setPost_date: function(post_date){
				this.post_date = post_date;
			},
			getNum_arguments: function(){
				return this.num_arguments;
			},
			setNum_arguments: function(num_arguments){
				this.num_arguments = num_arguments;
			},
			getViews: function(){
				return this.views;
			},
			setViews: function(views){
				this.views = views;
			},
			getCurrent_page: function(){
				return this.current_page;
			},
			setCurrent_page: function(current_page){
				this.current_page = current_page;
			}
		});//End UserTopic.prototype

				TopicMini = Class.create();

		Object.extend(TopicMini.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.topic_id = obj.topic_id;
					this.title = obj.title;
					this.description = obj.description;
					this.video_thumbnail_url = obj.video_thumbnail_url;
					this.views = obj.views;
					this.post_date = obj.post_date;
					this.channel_id = obj.channel_id;
					this.current_page = obj.current_page;
				}
			},

			getTopic_id: function(){
				return this.topic_id;
			},
			setTopic_id: function(topic_id){
				this.topic_id = topic_id;
			},
			getTitle: function(){
				return this.title;
			},
			setTitle: function(title){
				this.title = title;
			},
			getDescription: function(){
				return this.description;
			},
			setDescription: function(description){
				this.description = description;
			},
			getVideo_thumbnail_url: function(){
				return this.video_thumbnail_url;
			},
			setVideo_thumbnail_url: function(video_thumbnail_url){
				this.video_thumbnail_url = video_thumbnail_url;
			},
			getViews: function(){
				return this.views;
			},
			setViews: function(views){
				this.views = views;
			},
			getPost_date: function(){
				return this.post_date;
			},
			setPost_date: function(post_date){
				this.post_date = post_date;
			},
			getChannel_id: function(){
				return this.channel_id;
			},
			setChannel_id: function(channel_id){
				this.channel_id = channel_id;
			},
			getCurrent_page: function(){
				return this.current_page;
			},
			setCurrent_page: function(current_page){
				this.current_page = current_page;
			}
		});//End TopicMini.prototype

				TopicRating = Class.create();

		Object.extend(TopicRating.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.topic_id = obj.topic_id;
					this.user_id = obj.user_id;
					this.rating = obj.rating;
				}
			},

			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;
			},
			getRating: function(){
				return this.rating;
			},
			setRating: function(rating){
				this.rating = rating;
			}
		});//End TopicRating.prototype

				TopicReference = Class.create();

		Object.extend(TopicReference.prototype, {
			initialize: function(obj){
				if(obj != null){
					this.topic_reference_id = obj.topic_reference_id;
					this.topic_id = obj.topic_id;
					this.title = obj.title;
					this.url = obj.url;
				}
			},

			getTopic_reference_id: function(){
				return this.topic_reference_id;
			},
			setTopic_reference_id: function(topic_reference_id){
				this.topic_reference_id = topic_reference_id;
			},
			getTopic_id: function(){
				return this.topic_id;
			},
			setTopic_id: function(topic_id){
				this.topic_id = topic_id;
			},
			getTitle: function(){
				return this.title;
			},
			setTitle: function(title){
				this.title = title;
			},
			getUrl: function(){
				return this.url;
			},
			setUrl: function(url){
				this.url = url;
			}
		});//End TopicReference.prototype

			
		TopicController = Class.create();
		Object.extend(TopicController.prototype, {
		

			initialize: function(){},
			
		
			


			_getTopicDebates: 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:"getTopicDebates", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_getRelatedTopics: 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:"getRelatedTopics", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_getRecentTopics: 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:"getRecentTopics", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_getMostPopularTopics: 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:"getMostPopularTopics", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_searchTopics: 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:"searchTopics", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_saveTopicRating: 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:"saveTopicRating", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_updateTopicRating: 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:"updateTopicRating", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_addTopicReference: 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:"addTopicReference", data:JSON.stringify(obj), clazz:"TopicController" , 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...') }
				});
			},
			_deleteTopicReference: 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:"deleteTopicReference", data:JSON.stringify(obj), clazz:"TopicController" , 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 TopicController.prototype

		