// Steve's RSS Embedding & Fading Script

// Set Global Variables Used.
/*global XMLHttpRequest, ActiveXObject, DOMParser, setTimeout, alert, window, document */

// Function to allow for multiple parameters to be passed to setTimeout (IE doesn't support multiple parameters on this function).
var _st = window.setTimeout;

window.setTimeout = function(fRef, mDelay) { 
		if (typeof fRef == "function") {
			var argu = Array.prototype.slice.call(arguments,2); 
			var f = function() { fRef.apply(null, argu); }; 
			return _st(f, mDelay); 
		}
		return _st(fRef,mDelay);
};

// Function to fade text colour from White -> Black.
function fade(id, hex) {
	document.getElementById('rss' + id).style.color='rgb(' + hex + ',' + hex + ',' + hex + ')';
	if(hex>0) {
		hex -= 20;
		setTimeout(fade, 100, id, hex);
	}
}

// IE fails once again as it does not have the DOMParser built-in like other browsers; So add it.

if (typeof DOMParser == "undefined") {
   DOMParser = function () {};

   DOMParser.prototype.parseFromString = function (str, contentType) {
	  if (typeof ActiveXObject != "undefined") {
		 var d = new ActiveXObject("MSXML.DomDocument");
		 d.loadXML(str);
		 return d;
	  } else if (typeof XMLHttpRequest != "undefined") {
		 var req = new XMLHttpRequest();
		 req.open("GET", "data:" + (contentType || "application/xml") +
						 ";charset=utf-8," + encodeURIComponent(str), false);
		 if (req.overrideMimeType) {
			req.overrideMimeType(contentType);
		 }
		 req.send(null);
		 return req.responseXML;
	  }
   };
}

function connect(id) {
	// AJAX to retrieve RSS feed.

	var http;

	try	{
		// Firefox, Opera 8.0+, Safari
		http = new XMLHttpRequest();
	}

	catch (a) {
		// Internet Explorer
		try	{ http = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (b) {
			try { http = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (c) { document.getElementById(id).innerHTML = 'Your browser does not support AJAX!'; }
		}
	}
	
	return http;
}

function embedrss() {

	var http = connect('rss');
	http.open('GET', 'rss.xml');
	http.onreadystatechange = function() {

	  if(http.readyState == 4) {
		
		// Extract required XML elements.
		
		var xmlobject = new DOMParser().parseFromString(http.responseText, 'text/xml');
		var root = xmlobject.getElementsByTagName('rss')[0];
		var channels = root.getElementsByTagName('channel');
		var title = channels[0].getElementsByTagName('title');
		var items = channels[0].getElementsByTagName('item');
		
		// Construct XHTML to embed, colour set to white ready to be faded.

		var text = '<a href="rss.xml" id="rss_title">' + title[0].firstChild.nodeValue + '</a><ul>';
		
		for (var i=0; i<items.length; i++) {
			var titles = items[i].getElementsByTagName('title');
			text += '<li><a href="rss.xml" id="rss' + i + '" style="color: rgb(255,255,255);">' + titles[0].firstChild.nodeValue + '</a></li>';
		}

		text += '</ul>';
		
		// Write to #rss div.
		
		document.getElementById('rss').innerHTML = text;
		
		// Begin fade in for RSS titles.
		
		for (i=0; i<items.length; i++) {
			setTimeout(fade, i*250, i, 255);
		}
		
	  }
	};

	http.send(null);
}

function flickr() {

	var http = connect('flickr2');
	http.open('GET', 'flickr.php');
	http.onreadystatechange = function() {

	  if(http.readyState == 4) {
		
		// Extract required XML elements.
		
		var xmlobject = new DOMParser().parseFromString(http.responseText, 'text/xml');
		var root = xmlobject.getElementsByTagName('rss')[0];
		var channels = root.getElementsByTagName('channel');
		var items = channels[0].getElementsByTagName('item');
		
		// Construct XHTML to embed.

		var text = '<a onclick="javascript: document.getElementById(\'flickr_a\').removeAttribute(\'href\'); document.getElementById(\'flickr1_img\').src=\'images/choc.jpg\'; document.getElementById(\'flickr1_img\').alt=\'Chocolate Muffin (Local Image)\'; document.getElementById(\'flickr1_img\').title=\'Chocolate Muffin (Local Image)\';" style="cursor: pointer;"><img src="images/choc.jpg" alt="Chocolate Muffin (Local Image)" title="Chocolate Muffin (Local Image)" /></a>';
		
		for (var i=0; i<items.length; i++) {
			var media = items[i].getElementsByTagName('media');
			var image = media[0].getElementsByTagName('image');
			var thumb = media[0].getElementsByTagName('thumbnail');
			var title = items[i].getElementsByTagName('title');
			var link = items[i].getElementsByTagName('link');
			text += '<a onclick="javascript: document.getElementById(\'flickr_a\').href=\'' + link[0].firstChild.nodeValue + '\'; document.getElementById(\'flickr1_img\').src=\'' + image[0].firstChild.nodeValue + '\'; document.getElementById(\'flickr1_img\').alt=\'' + title[0].firstChild.nodeValue + '\'; document.getElementById(\'flickr1_img\').title=\'' + title[0].firstChild.nodeValue + '\';" style="cursor: pointer;"><img src="' + thumb[0].firstChild.nodeValue + '" alt="' + title[0].firstChild.nodeValue + '" title="' + title[0].firstChild.nodeValue + '" /></a>';
		}

		document.getElementById('flickr2').innerHTML = text;
	  }
	};

	http.send(null);
}