/*
	@author: Alex Beutel
	@email: alex.beutel@gmail.com
	@url: http://ambmediadesign.com
	@update: http://ambmediadesign.com/scripts/greader.js
	@title: Jetpack Google Reader Checker
	@description: Jetpack Google Reader Checker, checks for unread items in Googles RSS Reader Application
	@version: 1.0b
*/

/*
Modified from script by Benjamin Auer (benjaminauer@googlemail.com).  His version of the script
can be seen at http://jetpacks.benji-banned.ch
*/


function GoogleReader() {

}

GoogleReader.prototype = {

	cachedPosts: function() {},
	titleArray: function() {},
	openReader: function() {
		var tab = this.findReader();
		if(tab < 0) {
			jetpack.tabs.open("http://reader.google.com");
			jetpack.tabs[jetpack.tabs.length-1 ].focus();
		} else {
			jetpack.tabs[tab].focus()
		}
	},

	findReader: function() {
		var readertab = -1;
		for(var i=0;i<jetpack.tabs.length;i++) {
			if(jetpack.tabs[i].url.indexOf("www.google.com/reader")>=0) {
				readertab = i;
			}
		}
		return readertab;
	},

	notify: function(msg) {
		jetpack.notifications.show({
			title: "Google Reader",
			body: msg,
			icon: "http://www.ambmediadesign.com/scripts/reader.ico"
		});
	},

	notifyWithTitle: function(key, diff) {
		self = this;
		if(self.titleArray[key]) {
			self.notify(diff + " new posts on " + self.titleArray[key]);
			return;
		}
		$.ajax({
			type: "GET",
			url: self.url2 + escape(key) + "?n=1",
			dataType: "json",
			async: true,
			success: function (json) {
				self.titleArray[key] = json['title'].replace("&amp;", "&").replace("&lt;", "<").replace("&gt;", ">").replace("&#39;", "'");
				self.notify(diff + " new posts on " + self.titleArray[key]);
			}
		});
	},

	update: function(doc) {
			doc = $(doc); self = this;
			var count = 0;

			$.ajax({
				type: "GET",
				url: self.url,
				dataType: "json",
				async: true,
				success: function(json) {
					var srcs = json.unreadcounts;
					var posts = function() {};
					for(var i = 0; i < srcs.length; i++) {
						if(srcs[i]['id'].substr(0, 4) == "feed") {
							posts[srcs[i]['id']] = srcs[i]['count'];
						}
					}

					for(key in posts) {
						if(!key.substr || key.substr(0,4) != "feed") continue;
						count += posts[key];
						
						if(self.cachedPosts[key] == posts[key] || posts[key] == 0) continue;

						var diff = posts[key];
						if(self.cachedPosts[key]) diff = posts[key] - self.cachedPosts[key];
						if(diff > 0) self.notifyWithTitle(key, diff);

					}

					self.cachedPosts = posts;
					self.count = count;
					$(doc).find("#count").text(count);
				},

				error: function (XMLHttpRequest, textStatus, errorThrown) {
					$(doc).find("#count").text(textStatus);
				}

			});
		},

	count: 0,
	url: "http://www.google.com/reader/api/0/unread-count?allcomments=true&output=json",
	url2: "http://www.google.com/reader/api/0/stream/contents/"
}

jetpack.statusBar.append({
	html: '<span style="width: 16px;"><img src="http://www.ambmediadesign.com/scripts/reader.ico" style="opacity:0.5"/><span id="count"></span></span>',
	width: 16,
	onReady: function (doc) {
		var greader = new GoogleReader(doc);
		$(doc).find("*").css({cursor:"pointer"});
		$(doc).click(function() { greader.openReader() });
		greader.update(doc);
		setInterval( function() { greader.update(doc); }, 60*1000 );
	}

});