

var GitHub = {
	'repos': function(username, callback) {
		new Request.JSON({
			'url': '/feeds/github/' + username,
			'method': 'get',
			'onSuccess': callback
		}).send();
	}
};



var Tracklist = {

	container: {},
	tracks: [],
	altimage: '',
	blocks: [],

	init: function(c, t) {
		this.container = c, this.tracks = t;

		// show latest track
		this.less();
	},

	build: function() {
		/*

		<div class="track">
			<img src="Src" />
			<div class="jewel"></div>
			<a href="Url">Track</a>
			<br />
			<span class="small quiet">Date</span>
		</div>

		*/
		for(var i = 0; i < this.tracks.length; i += 1) {
			var x = this.tracks[i];

			this.blocks[i] = new Element('div', {
				'class': 'track'
			});

			if(x.image) {
				this.blocks[i].grab(new Element('img', {
					'src': x.image
				}));

				this.blocks[i].grab(new Element('div', {
					'class': 'jewel'
				}));
			}

			this.blocks[i].grab(new Element('a', {
				'html': x.artist + ' &ndash; ' + x.track,
				'href': x.url
			}));

			this.blocks[i].grab(new Element('br'));

			this.blocks[i].grab(new Element('span', {
				'class': 'small quiet',
				'html': x.date
			}));
		}
	},

	more: function() {
		// build list
		this.build();

		// show all
		this.container.empty();

		for(var i = 0; i < this.blocks.length; i += 1) {
			this.container.grab(this.blocks[i]);
		}

		// show lesslink
		var m = new Element('a', {
			'html': 'Show less',
			'href': '#less',
			'events': {
				'click': function() {
					Tracklist.less();
					return false;
				}
			}
		});
		this.container.grab(m);
	},

	less: function() {
		// build list
		this.build();

		// show latest track
		this.container.empty();
		this.container.grab(this.blocks[0]);

		// show morelink
		this.container.grab(new Element('a', {
			'html': 'Show more',
			'href': '#more',
			'events': {
				'click': function() {
					Tracklist.more();
					return false;
				}
			}
		}));
	}
};

