Event.observe(window, 'load', loadLastFM)
Event.observe(window, 'load', loadFlickr)
Event.observe(window, 'load', loadDelicious)

function loadLastFM(){
	if (!$('listening')){
		return false
	}
	// create loader image...
	var img = document.createElement('img')
	img.src='img/loader.gif'
	img.className = 'sidebarLoader'
	img.id='lastLoader'
	$('listening').appendChild(img)
	
	var url = 'req/last.fm.asp'
	new Ajax.Request(
		url, 
		{
			onComplete:function(response){
				drawLastFM(response.responseXML)
			}
		}
	)
}

function loadFlickr(){
	if (!$('flickr')){
		return false;
	}
	// create loader image...
	var img = document.createElement('img')
	img.src='img/loader.gif'
	img.className = 'sidebarLoader'
	img.id='flickrLoader'
	$('flickr').appendChild(img)
	
	var url = 'req/getFlickrRecent.asp'
	new Ajax.Request(
		url, 
		{
			onComplete:function(response){
				drawFlickr(response.responseXML)
			}
		}
	)
}

function loadDelicious(){
	if (!$('visiting')){
		return false;
	}
	// create loader image...
	var img = document.createElement('img')
	img.src='img/loader.gif'
	img.className = 'sidebarLoader'
	img.id='delLoader'
	$('visiting').appendChild(img)
	
	var url = 'req/delicious.asp'
	new Ajax.Request(
		url, 
		{
			onComplete:function(response){
				drawDelicious(response.responseXML)
			}
		}
	)
}

function drawLastFM(xmldoc){
	var colItems = xmldoc.getElementsByTagName('track')
	var iCount = colItems.length
	var container = $('listening')
	if (iCount == 0){
		// no news items in feed
		var p = document.createElement('p')
		p.appendChild(document.createTextNode('No Recent Tracks'))
		container.appendChild(p)
	}
	else{
		if (iCount > 6) {iCount = 6}
		for (var i=0; i<iCount; i++){
			// loop through news items
			if (colItems.item(i).hasChildNodes){
				// there are items under this heading.
				var artists = colItems[i].getElementsByTagName('artist')
				var tracks = colItems[i].getElementsByTagName('name')
				var albums = colItems[i].getElementsByTagName('album')
				var dtDates = colItems[i].getElementsByTagName('date')
				
				var itemArtist = formatText(artists[0].firstChild.nodeValue)
				var itemTrack = formatText(tracks[0].firstChild.nodeValue)
				try{
					var itemAlbum = formatText(albums[0].firstChild.nodeValue)								
				}
				catch(e){
					var itemAlbum = itemTrack
				}
				var tempDate = dtDates[0].firstChild.nodeValue
				// comes in as 19 Dec 2007, 08:25
				tempDate = tempDate.replace(',', ' ')
				var itemDate = new Date(tempDate)
				
				itemAlbum = itemArtist + ' ' + itemAlbum
				
				// find out how long ago this track was played
				var nowDate = new Date()
				var difDate = new Date(nowDate - itemDate)
				//alert(nowDate + '\n' + itemDate)
				difDate = new String(((difDate/1000)/60)/60) // number of hours
				var point = difDate.indexOf('.') // find the decimal point
				var difHours = difDate.substring(0,point)
				var difMinutes = difDate.substring(point,(difDate.length))
				var difDays = new String(difDate / 24)
				if (difDays >= 1){
					// track was played more than a day ago. Take the value before the . as the days and 
					// calculate the hours remaining
					var difPoint = difDays.indexOf('.')
					var difDaysHours = difDays.substring(difPoint,(difDays.length))
					difDaysHours = new String(difDaysHours * 24)
					difDays = difDays.substring(0,difPoint)
					// get the minutes
					difPoint = difDaysHours.indexOf('.')
					var difDaysMinutes = difDaysHours.substring(difPoint, difDaysHours.length)
					difDaysMinutes = Math.round(difDaysMinutes * 60)
					difDaysHours = Math.round(difDaysHours)
				}
				difMinutes = new String(difMinutes*60)
				point = difMinutes.indexOf('.')
				difMinutes = difMinutes.substring(0,point)
				
				var trackContainer = document.createElement('div')
				trackContainer.className = 'trackContainer'
				
				var a = document.createElement('a')
				a.href='http://www.amazon.co.uk/gp/search?ie=UTF8&keywords=' + itemAlbum + '&tag=cmpdesigns-21&index=blended&linkCode=ur2&camp=1634&creative=6738'
				a.appendChild(document.createTextNode(itemArtist + ' - ' + itemTrack))
				
				var p = document.createElement('p')
				if (difDays >= 1){
					p.appendChild(document.createTextNode(difDays+'d '+difDaysHours+'h and '+difDaysMinutes+'m ago'))
				}
				else{
				
					if (difHours == 0){
						p.appendChild(document.createTextNode(difMinutes+'m ago'))
					}
					else{
						p.appendChild(document.createTextNode(difHours+'h and '+difMinutes+'m ago'))
					}
				}				
				trackContainer.appendChild(a)
				trackContainer.appendChild(p)
				container.appendChild(trackContainer)
			}
		}
	}	
	checkRemove('lastLoader')
}

function drawDelicious(xmldoc){
	var colItems = xmldoc.getElementsByTagName('post')
	var iCount = colItems.length
	var container = $('visiting')
	if (iCount == 0){
		// no news items in feed
		var p = document.createElement('p')
		p.appendChild(document.createTextNode('No Links'))
		container.appendChild(p)
	}
	else{
		if (iCount > 6) {iCount = 6}
		for (var i=0; i<iCount; i++){
			// loop through news items
			if (colItems.item(i).hasChildNodes){
				// there are items under this heading.
				//var titles = colItems[i].getElementsByTagName('description')
				//var links = colItems[i].getElementsByTagName('href')
				//var descs = colItems[i].getElementsByTagName('extended')
				var itemTitle = formatText(colItems[i].getAttribute('description'))
				var itemLink = formatText(colItems[i].getAttribute('href'))
				var itemDesc = formatText(colItems[i].getAttribute('extended'))
				
				var trackContainer = document.createElement('div')
				trackContainer.className = 'trackContainer'
				
				var a = document.createElement('a')
				a.href=itemLink
				a.appendChild(document.createTextNode(itemTitle))
				var p = document.createElement('p')
				p.appendChild(document.createTextNode(itemDesc))
				trackContainer.appendChild(a)
				trackContainer.appendChild(p)
				container.appendChild(trackContainer)
			}
		}
	}	
	checkRemove('delLoader')
}

function drawFlickr(xmldoc){
	var colItems = xmldoc.getElementsByTagName('item')
	var iCount = colItems.length
	var container = $('flickr')
	if (iCount == 0){
		// no news items in feed
		var p = document.createElement('p')
		p.appendChild(document.createTextNode('No Recent Photos'))
		container.appendChild(p)
	}
	else{
		if (iCount > 6) {iCount = 6}
		for (var i=0; i<iCount; i++){
			// loop through pre-formatted flickr feed
			if (colItems.item(i).hasChildNodes){
				// there are items under this heading.
				var titles = colItems[i].getElementsByTagName('title')
				var descs = colItems[i].getElementsByTagName('description')
				var links = colItems[i].getElementsByTagName('link')
				var itemTitle = formatText(titles[0].firstChild.nodeValue)
				var itemDesc = formatText(descs[0].firstChild.nodeValue)
				var itemLink = formatText(links[0].firstChild.nodeValue)
				
				var a = document.createElement('a')
				a.href=itemLink
				if (i % 2 == 0){
					a.className = 'flickThumb'
				}
				else{
					a.className = 'flickThumb right'
				}
				a.title = itemTitle
				
				var img = document.createElement('img')
				img.alt = itemTitle
				img.src = itemDesc
				
				a.appendChild(img)
				
				container.appendChild(a)				
			}
		}
	}	
	checkRemove('flickrLoader')
	// add a clearer div
	var clearer = document.createElement('div')
	clearer.className = 'clearer'
	clearer.appendChild(document.createTextNode('&nbsp;'))
	container.appendChild(clearer)
}
