/**
 * AS4ChannelPortalPanel 
 * Model object represents a single channel navifation panel within the portal page
 */

var AS4ChannelPortalPanel = Class.create(AS4PortalPanel, {
	
	/**
	 * @type {Array} Array of static loaded channels
	 */
	channels: null,
	
	/**
	 * @constructor
	 */
	initialize: function($super, title, options, channels) {
		$super(title, options, 'navigation');
		
		if(channels)
			this.channels = channels;
	},
	
	/**
	 * AJAX refresh the channel portal page
	 * 
	 * @param {boolean} force If true, an AJAX request will be forced. Default is false.
	 */
	reload: function($super, force)
	{
		$super();
		
		var force = (force ? true : false);
		
		// If we have a list of static channels, use those rather than
		// TODO: DIRTY DIRTY DIRTY. Why are we building DOM in the controller javascript??? 
		if (this.channels && !force) 
		{
			var html = '<div class="content">' +
							'<ul id="channel_list">';
							
								this.channels.channels.each(function(channel){
									if(channel.has_rss == 'true')
										html += '<li class="homepage_channel_feed">';
									else
										html += '<li>';

                  html += '<a href="/' + channel.url_name +'">' 

                  if(channel.thumbnail_id)
  									html += '<img class="thumbnail" width="24" height="24" src="/resources/view/id/' + channel.thumbnail_id + '?inline=true&log=false" />';
                  else
  									html += '<img class="thumbnail" width="24" height="24" src="/app/common/assets/images/icons/32/folder.png" />';
									
                  html += channel.name + '</a>';

									if(channel.has_rss == 'true')
										html += '<a class="feed_icon" title="Add this channel\'s feed to your homepage" href="javascript:AS4Home.getInstance().createPanel(AS4PortalPanel.FEED_PANEL, \'' + channel.name + '\', {uri: \'/' + channel.url_name + '?rss=true\', items: 5}, $(\'primary_column\'));"><span></span></a>';
									
									html += '</li>';
								});
							
			html += 		'</ul>' +
						'</div>';
			
			this.onReload();
			this.contentElement	().update(html);			
		}
		else 
		{
			var url = "/home/panel_content";
			
			var params = {
				renderMode: "update",
				update: true,
				type: "navigation",
				channelId: null, // Load root channels
				depth: 0 // Only show top-level
			};
			
			AS4Shell.getInstance().ajaxUpdate(url, params, this.contentElement(), $A([this.onReload.bind(this)]), {showIndicator: false});
		}
	}
});
