var googleInitialLoadTimeoutID;
var twitterInitialLoadTimeoutID;
var loadingID;
var loadingPage;

function fillGoogleReaderContent (blog) {
 if (!blog || !blog.items) return;
 if (googleInitialLoadTimeoutID != null) {
  window.clearTimeout(googleInitialLoadTimeoutID);
 }
 var mylist = $('<ul>')
 for (var i = 0; i < blog.items.length; i++) {
  var item = blog.items[i];
  if (item.title != null) {
    title = item.title
  }
  else {
    title = item.content
  }
  if (item.origin.title!= null) {
    origin = item.origin.title
  }
  else {
    origin = item.author
  }
  mylist.append($('<li>')
    .append($('<a>')
    .attr('href', item.alternate.href)
    .append(document.createTextNode(title)))
    .append($('<div>from ' + origin + '</div>')))
 }
 $('#google-reader-loading').replaceWith(mylist);
}

function fillTwitterReaderContent (data) {
 if (!data) return;
 if (googleInitialLoadTimeoutID != null) {
  window.clearTimeout(twitterInitialLoadTimeoutID);
 }

 var mylist = $('<ul>')
 $.each(data, function(i, item) {
  mylist.append($('<li>').append(document.createTextNode(item.text)))
 })
 $('#twitter-reader-loading').replaceWith(mylist);
}
function fillFromTwitter(){
 twitter_loading = $('#twitter-reader-loading');
 twitter_loading.empty();
 twitter_loading.append("<p>Loading from Twitter...</p>");
 $.ajax({
  url: "http://twitter.com/status/user_timeline/makuk66.json?count=10&callback=fillTwitterReaderContent",
  dataType: 'jsonp',
  jsonp: false,
  jsonpCallback: "fillTwitterReaderContent",
 });
}
function fillFromGoogle() {
 google_loading = $('#google-reader-loading');
 google_loading.empty();
 google_loading.append("<p>Loading from Google...</p>");
 $.ajax({
  url: "https://www.google.co.uk/reader/public/javascript/user/12768918357995059567/state/com.google/broadcast?n=10&callback=fillGoogleReaderContent",
  dataType: 'jsonp',
  jsonp: false,
  jsonpCallback: "fillGoogleReaderContent",
 });
}

function linkClickCallback(eventObject) {
	href=$(eventObject.target).attr('href');
	swapMainContent(href);
	history.pushState(null, null, href);
	window.addEventListener("popstate", function(e) {
	    swapMainContent(location.pathname);
	}, false);
	eventObject.preventDefault();
}
function stopMainLoadingSpinner() {
	if (loadingID != null) {
		window.clearTimeout(loadingID);
	}
	$('#main-spinner-overlay').remove();
}
function showLoadingSpinner() {
	$('#main-spinner-overlay').remove();
	$('#leftcol').prepend("<div id='main-spinner-overlay'><img src='/img/ajax-loader.gif'><div>Loading <a href='" + loadingPage + "'>" + loadingPage + "</a>...</div></div>");
}
function arrangeMainLoadingSpinner(href) {
	loadingPage = href;
	stopMainLoadingSpinner();
	loadingID = window.setTimeout(showLoadingSpinner, 1000)
}
function swapMainContent(href) {
	main=$("#main");
	main.fadeTo('fast',0.1,function(){
		p = main.parent();
		arrangeMainLoadingSpinner(href);
		$.get(href, function(data) {
			newPage=$(data)
			newMain = newPage.find('#main');
			newMain.fadeTo(0,'0.1')
			setupHistoryClicks(newMain)
			stopMainLoadingSpinner();
			p.empty();
			p.append(newMain);
			document.title = newPage.filter('title:first').text();
			newMain.fadeTo('fast', 1);
			recycling = $("#recycling")
			recycling.empty();
			recycling.append("\u2672");
		});	  
	});
}
function supports_history_api() {
  return !!(window.history && history.pushState);
}
function setupHistoryClicks(context) {
 if (!supports_history_api()) {
  console.log("no history api for you");
  return;
 }
 if (context == null) {
  context = $('body');
 }
 $('.linktomain', context).each(function(x,e){
  $(e).click(linkClickCallback);
 });
}
function main_js_document_ready()
{
 twitter_loading = $('#twitter-reader-loading');
 twitter_loading.empty();
 twitter_loading.append("<p>Loading...</p>");
 twitterInitialLoadTimeoutID = window.setTimeout(fillFromTwitter, 2000)

 google_loading = $('#google-reader-loading');
 google_loading.empty();
 google_loading.append("<p>Loading...</p>");
 googleInitialLoadTimeoutID = window.setTimeout(fillFromGoogle, 2500)

 var options = {
  url: "http://www.greenhills.co.uk/dynamic.js",
  dataType: "script",
  cache: true,
  type: "GET"
 };
 $.ajax(options);

 setupHistoryClicks(null);
}

