/*------------------------------------------------------------------------------

BusinessWeek
Blog Directory Scripts
Copyright (c) by The McGraw-Hill Companies Inc. All Rights Reserved

------------------------------------------------------------------------------*/

/*- jQuery Document Ready ----------------------------------------------------*/

// Register functions with jQuery document ready event here

$(document).ready(function(){
	initFeaturedPartner();
	initFeeds();
});
 
/*- Featured Partner Blog ----------------------------------------------------*/

function initFeaturedPartner() {
	var request = getHTTPObject();
	request.open("GET", "http://www.businessweek.com/federated/business_week_small_business.xml", true);
	// request.open("GET", "federated_test.xml", true); // TEST URL
	request.onreadystatechange = displayPartnerBlogs(request);
	request.send(null);
}

function displayPartnerBlogs(requestObject) {
return function() {
		if (requestObject.readyState == 4) {
			var rawSource = requestObject.responseText;
			//
			// change Atom element names that make Safari choke ("title", "list")
			rawSource = rawSource.replace(/<title/g, "<atomtitle");
			rawSource = rawSource.replace(/<\/title>/g, "</atomtitle>");
			rawSource = rawSource.replace(/<link /g, "<atomlink ");
			var sourceXML = parseXML(rawSource);
			var entries = $(sourceXML).find('entry');
			//
			$('#partnerBlogs p, #partnerBlogs fieldset').remove();
			var federatedPosts = $('#partnerBlogs').append('<ul></ul>');			
			//
			for (var i = 0; i < 5; i++) {
				var blogTitle = $(entries[i]).find('name').text();
				var postTitle = $(entries[i]).find('atomtitle').text();
				var link = $(entries[i]).find('atomlink').attr("href");
				//
				var created = $(entries[i]).find('updated').text();
				var month = created.substr(5, 2)
				month = month.replace(/^[0]+/g,"");
				var day = created.substr(8, 2)
				day = day.replace(/^[0]+/g,"");
				var year = created.substr(0, 4);
				created = month + "/" + day + "/" + year;
				//
				switch (blogTitle) {
					case "Alarm:Clock": var blogClass = "alarmClock"; break;
					case "How to Change the World": var blogClass = "changeTheWorld"; break;
					case "Dane Carlsons Business Opportunities Weblog": var blogClass = "daneCarlson"; break;
					case "Duct Tape Makreting": var blogClass = "ductTape"; break;
					case "Fractals of Change": var blogClass = "fractals"; break;
					case "GigaOM": var blogClass = "gigaOM"; break;
					case "LifeClever": var blogClass = "lifeClever"; break;
					case "Small Business Trends": var blogClass = "smallBizTrends"; break;
					case "Springwise": var blogClass = "springwise"; break;
					case "Techdirt": var blogClass = "techDirt"; break;
					case "VentureBeat": var blogClass = "ventureBeat"; break;
					default: var blogClass = ""; break;
				}				
				$(federatedPosts).find('ul').append('<li class="'+blogClass+'"><a href="'+link+'"><strong>'+blogTitle+':</strong> '+postTitle+' <span class="timeStamp">'+created+'</span></a></li>');
			}
		}
	};
}

/*- Recent Posts -------------------------------------------------------------*/

// Display recent posts for each blog using Atom feed.
// Use Atom feeds because they are not redirected to a different subdomain.
 
function initFeeds() {
	var blogs = $('.blog');	
	for (var i = 0; i < blogs.length; i++) {
		var link = blogs[i].getElementsByTagName("h3")[0].childNodes[0].href;
		link = link + "atom.xml";
		// link = "atom_test.xml"; // TEST URL OVERRIDE
		var request = getHTTPObject();
		request.open("GET", link, true);
		request.onreadystatechange = displayFeed(request, blogs[i]);
		request.send(null);
	}
}

function displayFeed(requestObject, blog) {
	return function() {
		if (requestObject.readyState == 4) {
			var rawSource = requestObject.responseText;
			//
			// change Atom element names that make Safari choke ("title", "list")
			rawSource = rawSource.replace(/<title>/g, "<atomtitle>");
			rawSource = rawSource.replace(/<\/title>/g, "</atomtitle>");
			rawSource = rawSource.replace(/<link /g, "<atomlink ");
			var sourceXML = parseXML(rawSource);
			var entries = $(sourceXML).find('entry');
			//
			var feedLink = $(blog).find('.feedLink');
			var recentPosts = $(feedLink).before('<ul></ul>');
			for (var i = 0; i < 3; i++) {
				var title = $(entries[i]).find('atomtitle').text();				
				var link = $(entries[i]).find('atomlink').attr("href");
				// temp fix to catch malformed link URLs
				link = link.replace(/http:\/\/www.businessweek.comhttp:\/\/www.businessweek.com\//g, "http://www.businessweek.com/");
				var created = $(entries[i]).find('created').text();
				var month = created.substr(5, 2)
				month = month.replace(/^[0]+/g,"");
				var day = created.substr(8, 2)
				day = day.replace(/^[0]+/g,"");
				var year = created.substr(0, 4);
				created = month + "/" + day + "/" + year;
				$(blog).find('ul').append('<li><a href="'+link+'">'+title+' <span class="timeStamp">'+created+'</span></a></li>');
			}
		}
	};
}

