var bFeedMaster = {

	once: false,
	pagetool: new bPageTool,

	init: function() {

		var htmlNewGroup = ''+
			'New RSS Group Title:<br />'+
			'<input type="text" id="bfeedmaster-new-group-entry" />&nbsp;'+
			'<input type="button" value="Create" onclick="javascript:bFeedMaster.createNewGroup();" />'
			'';
	
		jQuery('#bfeedmaster .new-group').qtip({
			'content':htmlNewGroup,
			'show':false,
			'hide':{'delay':500,'fixed':true,'when':{'event':'unfocus'}},
			'position':{'corner':{'target':'bottomMiddle','tooltip':'topRight'}},
			'style':{'name':'bDark'}	
		});
		

		this.getGroups(true);
		
		this.once = true;
		
		return;
	},
	
	getStream: function(group,page) {
		var that = this;
		
		if(!page) page = 1;
		
		jQuery('#bfeedmaster-results').html('<div style="text-align:center"><img src="/style/blogster/gfx/bob/loading02a.gif" /> Loading...</div>');
		
		jQuery.get(
			'/ai/rss-get-stream.api/' + getTime(),
			{ 'who':curBlogsterProfile.username,'group':group,'page':page },
			function(json) {
				var html = new String;
				var odd = true;
				
				if(json.list.length) {
					jQuery(json.list).each(function(){
						html += '<div class="blog-box' + ((odd)?(1):(2)) + '">'+
							'<h3 style="margin-bottom:0px;"><a href="' + this.url + '" target="_blank">' + this.title + '</a></h3>' +
							'<div style="font-size:8pt;margin-bottom:6px;">&raquo; <em>From ' + this.feedName + ' on ' + this.date + '</em></div>' + 
							'<blockquote>' + this.text + '</blockquote>' +
							'</div>' +
							'';
						
						odd = !odd;
					});
				} else {
					html += 'No data for these feeds yet.';
				}
				
				that.pagetool.page = json.page;
				that.pagetool.pageCount = json.pageCount;
				that.pagetool.pageCallback = function(page) { that.refreshStream(page);bCommon.windowScrollToTop(); }
			
				jQuery('#bfeedmaster-results').html(html);
				jQuery('#bfeedmaster-results').append(that.pagetool.get());
				return;
			},'json'			
		);
		
		return;
	},
	
	refreshStream: function(page) {
		if(!page) page = 1;
		this.getStream((this.curGroup)?(this.curGroup.id):(0),page);
		return;	
	},
	
	getFeeds: function(group) {

		jQuery('#bfeedmaster .feedlist').html('<li><img src="/style/blogster/gfx/bob/loading02a.gif" /> Loading...</li>');

		jQuery.get(
			'/ai/rss-get-feeds.api/' + getTime(),
			{ 'who':curBlogsterProfile.username,'group':group },
			function(json) {
				var ul = jQuery('#bfeedmaster .feedlist');
				var li;
			
				ul.empty();			
			
				if(json.list && json.list.length) {
					jQuery(json.list).each(function(){
						ul.append(li = jQuery.create('li',{'id':'bfeedmaster-feed-item-' + this.id})
							.css({'clear':'both'})
							.html(
								((json.owner)?(
									'<img src="/style/blogster/gfx/icon-delete.png" onclick="javascript:bFeedMaster.deleteFeed(\'' + this.id + '\');" style="cursor:pointer;float:left;" />'+
									'<img src="/style/blogster/gfx/icon-edit.png" id="bfeedmaster-edit-feed-' + this.id + '" class="bfeedmaster-edit-feed" onclick="javascript:bFeedMaster.editFeed(\'' + this.id + '\');" style="cursor:pointer;float:left;" />'
								):(''))+
								'<div class="bfeedmaster-feed-icon" style="width:20px;height:20px;background:url(' + this.icon + ') center center no-repeat;float:left;margin:0px 4px;"></div> '+
								this.titleShort
							)
						);

					});
				
	
				
				} else {
					ul.append(jQuery.create('li').html('<em>No feeds yet</em>'));
				}
					
			
				return;
			},'json'		
		);	
	
	},
	
	formNewFeed: function() {
		if(this.curGroup)
			jQuery('#bfeedmaster-new-feed-label').html('<strong>Group: ' + this.curGroup.name + '</strong>');
		else
			jQuery('#bfeedmaster-new-feed-label').html('To add directly in to group, click the group first.');

		jQuery('#bfeedmaster').qtip("show");
		jQuery('#bfeedmaster-new-feed-entry').focus();
		return;
	},
	
	testNewFeed: function() {
		var that = this;
		var url = jQuery.trim(jQuery('#bfeedmaster-new-feed-entry').attr('disabled','disabled').val());
		
		jQuery('#bfeedmaster-new-feed-status').html('One moment please...');
		
		jQuery.get(
			'/a/rss-feed-validate.api/' + getTime(),
			{ 'url':url },
			function(json) {
				if(json.valid) {
					jQuery('#bfeedmaster-new-feed-status').html('Adding feed...');
					that.createNewFeed();
				} else {
					jQuery('#bfeedmaster-new-feed-entry').attr('disabled','');
					jQuery('#bfeedmaster-new-feed-status').html('<span style="color:#ffaaaa">ERR1 There is an error with this feed we cannot read.</span>');
				}
				return;
			},'json'
		);
		
		return;	
	},
	
	createNewFeed: function() {
		var that = this;
		var url = jQuery.trim(jQuery('#bfeedmaster-new-feed-entry').val());

		jQuery.post(
			'/ai/rss-new-feed.api/' + getTime(),
			{ 'url':url,'group':((that.curGroup)?(that.curGroup.id):(0)) },
			function(json) {
				if(json.errno == 0) {
					that.getFeeds(json.group);
					that.getStream(json.group);

					//. resetting the tooltips.
					jQuery('#bfeedmaster-new-feed-entry').val('');
					jQuery('#bfeedmaster').qtip("hide");
					jQuery('#bfeedmaster-new-feed-entry').attr('disabled','');
					jQuery('#bfeedmaster-new-feed-status').text('');
				} else {
					jQuery('#bfeedmaster-new-feed-entry').attr('disabled','');
					jQuery('#bfeedmaster-new-feed-status').html('<span style="color:#cc0000">ERR2 There is an error with this feed we cannot read.</span>');
				}
				return;
			},'json'		
		);
	},
	
	deleteFeed: function(id) {
		var that = this;
		
		if(confirm('Are you sure you want to delete this feed?'))
		jQuery.post(
			'/ai/rss-delete-feed.api/' + getTime(),
			{ 'feed':id },
			function(json) {
				that.refreshFeeds();
				that.refreshStream();
				return;
			},'json'		
		);
	
	},
	
	editFeed: function(id) {
		var that = this;
		var li = jQuery('#bfeedmaster-feed-item-' + id);

		jQuery('#bfeedmaster-feed-editor').remove();
		
		var formHTML = ''+
			'<div id="bfeedmaster-feed-editor"><strong>RSS Feed URL:</strong><br />'+
			'<input type="text" id="bfeedmaster-feed-editor-url" value="One Moment..." disabled="disabled" style="width:300px;" />&nbsp;'+
			'<input type="button" id="bfeedmaster-feed-editor-commit" value="Save" disabled="disabled" onclick="javascript:bFeedMaster.updateFeed(\'' + id + '\');" />'+
			'</div>'+
			'';

		var api = jQuery(li.find('.bfeedmaster-edit-feed')).qtip({
			'content':formHTML,
			'show':false,
			'hide':{'delay':500,'fixed':true,'when':{'event':'unfocus'}},
			'position':{'target':li.find('.bfeedmaster-feed-icon:first'),'corner':{'target':'center','tooltip':'topLeft'}},
			'style':{'name':'bDark','tip':'topLeft'}	
		}).qtip('api');
		
		api.beforeShow = function() {
			jQuery.get(
				'/ai/rss-get-info.api/' + getTime(),
				{ 'entry':id },
				function(json) {				
					jQuery('#bfeedmaster-feed-editor-url').val(json.url).attr({'disabled':''}).focus().select();
					jQuery('#bfeedmaster-feed-editor-commit').attr({'disabled':''});				
					return;
				},'json'			
			);		
		};
		
		
		api.show();		
		
	},
	
	updateFeed: function(id) {
		var li = jQuery('#bfeedmaster-feed-item-' + id);
		var url = jQuery.trim(jQuery('#bfeedmaster-feed-editor-url').val());

		jQuery.post(
			'/ai/rss-update-feed.api/' + getTime(),
			{ 'entry':id,'url':url },
			function(json) {
				li.find('.bfeedmaster-edit-feed').qtip('hide');
				return;
			},'json'		
		);		
		
		return;
	},
	
	refreshFeeds: function() {
		this.getFeeds((this.curGroup)?(this.curGroup.id):(0));
		return;
	},
	
	getGroups: function(autofeed) {
		var that = this;
		
		jQuery('#bfeedmaster .filterlist').html('<li><img src="/style/blogster/gfx/bob/loading02a.gif" /> Loading...</li>');		
		
		jQuery.get(
			'/ai/rss-get-groups.api/' + getTime(),
			{ 'who':curBlogsterProfile.username },
			function(json) {
				var ul = jQuery('#bfeedmaster .filterlist');
				var li;
				
				ul.empty();
				ul.append(jQuery.create('li')
					.css('font-weight','bold')
					.html(
						((json.owner)?(
							'<div style="float:right;text-align:right;font-size:8pt;">'+
							'<a id="bfeedmaster-add-to-group-0" onclick="javascript:bFeedMaster.addToGroup(0);">+ Add</a><br />'+
							'</div>'
						):(''))
					)
					.addClass('group-selector')
					.addClass((that.curGroup)?('blog-box2'):('blog-box1'))
					.append(jQuery.create('a')
						.text('All RSS Feeds')
						.click(function(){
							that.curGroup = null;
							that.getFeeds(0);
							that.getStream(0);
							jQuery('#bfeedmaster .group-selector').removeClass('blog-box1').addClass('blog-box2');
							jQuery(this).parent().addClass('blog-box1').removeClass('blog-box2');
							return;				
						})
					)
				);
				
				jQuery(json.list).each(function(){
					var group = this;
					
					ul.append(jQuery.create('li')
						.css({'clear':'both','overflow':'auto','padding':'4px 2px'})
						.html(
							'<div id="bfeedmaster-group-item-' + this.id + '">'+
							((json.owner)?(
								//'<img src="/style/blogster/gfx/icon-delete.png" onclick="javascript:bFeedMaster.deleteGroup(\'' + this.id + '\');" style="cursor:pointer;float:right;" />'
								'<div style="float:right;text-align:right;font-size:8pt;line-height:1.2em">'+
								'<a id="bfeedmaster-add-to-group-' + this.id + '" onclick="javascript:bFeedMaster.addToGroup(\'' + this.id + '\');">+ Add Feed</a><br />'+
								'<a class="bfeedmaster-edit-group" onclick="javascript:bFeedMaster.editGroup(\'' + this.id + '\');">Edit</a> &nbsp; '+
								'<a onclick="javascript:bFeedMaster.deleteGroup(\'' + this.id + '\');">Delete</a>'+
								'</div>'
							):(''))+
							'</div>'
						)
						.addClass('group-selector')
						.addClass((that.curGroup && that.curGroup.id == group.id)?('blog-box1'):('blog-box2'))
						.append(jQuery.create('a')
							.html(' &raquo; ' + this.name)
							.click(function(){
								that.curGroup = group;
								that.getFeeds(group.id);
								that.getStream(group.id);
								jQuery('#bfeedmaster .group-selector').removeClass('blog-box1').addClass('blog-box2');
								jQuery(this).parent().addClass('blog-box1').removeClass('blog-box2');
								return;
							})
						)
					);					
					return;				
				});
				
			

				
				if(autofeed) {
					that.refreshFeeds();
					that.refreshStream();
				}
			
				return;
			},'json'		
		);	
	},
	
	addToGroup: function(id) {
		var that = this;

			jQuery('#bfeedmaster-new-feed-form').remove();

				var htmlNewFeed = '<div id="bfeedmaster-new-feed-form">'+
					'New RSS Feed URL:<br />'+
					'<span id="bfeedmaster-new-feed-label"></span>'+
					'<input type="text" id="bfeedmaster-new-feed-entry" style="width:250px;" />&nbsp;'+
					'<input type="button" value="Check" id="bfeedmaster-new-feed-test" onclick="javascript:bFeedMaster.testNewFeed();" />'+
					'<div id="bfeedmaster-new-feed-status"></div>'+
					'</div>';
			
		
				jQuery('#bfeedmaster').qtip({
					'content':htmlNewFeed,
					'show':false,
					'hide':{'delay':500,'fixed':true,'when':{'event':'unfocus'}},
					'position':{ 'target':jQuery('#bfeedmaster-add-to-group-' + id + ':first'), 'corner':{'target':'bottomMiddle','tooltip':'topRight'}},
					'style':{'name':'bDark'}	
				});

		if(id) {
			jQuery.get(
				'/ai/rss-get-info.api/' + getTime(),
				{ 'group':id },
				function(json) {				
					that.curGroup = json;
					that.getFeeds(id);
					that.getStream(id);
					that.formNewFeed();	
			
					return;
				},'json'			
			);
		} else {
				that.curGroup = null;
				that.getFeeds(0);
				that.getStream(0);
				that.formNewFeed();		
		}
		
		return;
	},
	
	formNewGroup: function() {
		jQuery('#bfeedmaster .new-group').qtip("show");
		jQuery('#bfeedmaster-new-group-entry').focus();
		return;
	},
	
	createNewGroup: function() {
		var that = this;
		var name = jQuery.trim(jQuery('#bfeedmaster-new-group-entry').val());

		jQuery.post(
			'/ai/rss-new-group.api/' + getTime(),
			{ 'name':name },
			function(json) {
				that.getGroups();

				//. resetting the tooltips.
				jQuery('#bfeedmaster-new-group-entry').val('');
				jQuery('#bfeedmaster .new-group').qtip("hide");
				return;
			},'json'		
		);

		return;
	},
	
	deleteGroup: function(id) {
		var that = this;
		
		if(confirm('Delete this feed group? The feeds will not be deleted, just this association.'))
		jQuery.post(
			'/ai/rss-delete-group.api/' + getTime(),
			{ 'group':id },
			function(json) {
				that.getGroups(true);
				return;
			},'json'		
		);	
	
		return false;
	},
	
	editGroup: function(id) {
		var that = this;
		var div = jQuery('#bfeedmaster-group-item-' + id);
		jQuery('#bfeedmaster-group-editor').remove();
		
		var formHTML = ''+
			'<div id="bfeedmaster-group-editor"><strong>Feed Group Name:</strong><br />'+
			'<input type="text" id="bfeedmaster-group-editor-name" value="One Moment..." disabled="disabled" style="width:200px;" />&nbsp;'+
			'<input type="button" id="bfeedmaster-group-editor-commit" value="Save" disabled="disabled" onclick="javascript:bFeedMaster.updateGroup(\'' + id + '\');" />'+
			'</div>'+
			'';

		var api = jQuery(div.find('.bfeedmaster-edit-group')).qtip({
			'content':formHTML,
			'show':false,
			'hide':{'delay':500,'fixed':true,'when':{'event':'unfocus'}},
			'position':{'target':div.find('.bfeedmaster-edit-group'),'corner':{'target':'bottomMiddle','tooltip':'topRight'}},
			'style':{'name':'bDark','tip':'topRight'}	
		}).qtip('api');
		
		api.beforeShow = function() {
			jQuery.get(
				'/ai/rss-get-info.api/' + getTime(),
				{ 'group':id },
				function(json) {				
					jQuery('#bfeedmaster-group-editor-name').val(json.name).attr({'disabled':''}).focus().select();
					jQuery('#bfeedmaster-group-editor-commit').attr({'disabled':''});				
					return;
				},'json'			
			);		
		};
		
		
		api.show();		
		
	},
	
	updateGroup: function(id) {
		var that = this;
		var div = jQuery('#bfeedmaster-group-item-' + id);
		var name = jQuery.trim(jQuery('#bfeedmaster-group-editor-name').val());

		jQuery.post(
			'/ai/rss-update-group.api/' + getTime(),
			{ 'group':id,'name':name },
			function(json) {
				div.find('.bfeedmaster-edit-group').qtip('hide');
				that.getGroups();
				return;
			},'json'		
		);	
		
		return;
	}
};
